javascript – Autocompletar Jquery y Drupal

Pregunta:

Tengo un campo de autocompletar en un formulario personalizado que funciona y devuelve un valor separado por tubería que luego quiero dividir e insertar en los campos de formulario apropiados. Por ejemplo, el campo de autocompletar devuelve 'Último | Primero | ID' como 'Smith | John | 123456789' y quiero asignar estos valores a otros campos de formulario y reemplazar el valor actual del campo de autocompletar con el apellido.

Obtuve con éxito la identificación y el nombre para completar con jquery, pero el apellido en el campo de autocompletar NO CAMBIARÁ.

Algunas observaciones: si primero advierto el valor del campo, cambia. Es como si el script se estuviera ejecutando demasiado rápido y se saltara el paso para establecer el valor del campo de autocompletar. También parece funcionar con otras activaciones de eventos en lugar de .change, como .blur o .keyup, pero la cuestión es que necesito que sea .change o de lo contrario no funcionará en todos los casos.

Aquí está mi código jquery:

$('#edit-emp-lname').change( function () {
    var empName = $(this).val();
    //alert($(this).val());
    var empArray = empName.split("|");

 //The following line is basically ignored. All other following lines work successfully.
    $(this).val(empArray[0]);
    $('input[name="emp_fname"]').val(empArray[1]);
    $('input[name="emp_uid"]').val(empArray[2]);
});

Actualización Para que esto funcione correctamente y en IE para arrancar, tuve que hacer un código adicional, que se muestra a continuación:

$('#edit-emp-lname').change(function() { doChange(); }).attr("onchange", function() { doChange(); }).blur( function() { doChange(); });
function doChange() {
    var empName = $('#edit-emp-lname').val();
    var empArray = empName.split("|");
    setTimeout( function () {
        $('#edit-emp-lname').val(empArray[0]);
        }, 10);
    $('#edit-emp-fname').val(empArray[1]);
    $('#edit-emp-uid').val(empArray[2]);
}

Respuesta:

Si quiero mostrar en autocompletar todo este campo, usaré hook_form_alter Cambiaré el valor de autocompletar con otra función, así que esto es lo que haré

function hook_form_alter() {
  $form['field_selectedarticles']['und'][0]['nid']['#autocomplete_path'] = 'autocomplete/filteration';
}

function autocomplete_filteration($string) {
  //select * fields I want
  print drupal_json_output($items);
}

Leave a Comment

Your email address will not be published. Required fields are marked *

web tasarım