Ошибка с автозаполнением jQuery - PullRequest
0 голосов
/ 28 июня 2011

Этот фрагмент кода не выполняет блок кода внутри функции обратного вызова для результата ():

var cityURL = '/myURL/path';
    $('#city').autocomplete(cityURL, {
        cachelength:0
    }).result(function(event, data){
       if(data){           
            $('#city_id').val(data[1]);
            $('#state_id').val(data[3]);
            $('#state').val(data[2]);
       }
    });

значение input # city_id и input # state_id не изменяется, но значение #state изменяется. Оба скрытых ввода находятся рядом с их полем:

<input type="text" id="city" name="city"/>
<input type="hidden" id="city_id" name="city_id" />

<input type="text" id="state" name="state"/>
<input type="hidden" id="state_id" name="state_id" />

однако, если я поставлю предупреждение, значения изменятся:

$('#city').autocomplete(cityURL, {
    cachelength:0
}).result(function(event, data){
   if(data){       
        alert(data[1]);
        $('input#city_id').attr('value',data[1]);
        $('input#state_id').val(data[3]);
        $('input#state').val(data[2]);
   }
});

почему это?

РЕДАКТИРОВАТЬ : поцарапать это, значения не меняются даже с предупреждением:

1 Ответ

2 голосов
/ 28 июня 2011

Как я и подозревал в своем комментарии, это просто Firebug, который не обновляется должным образом.Вы не должны доверять отображаемым атрибутам входных значений, поскольку они часто устарели.

Надежный способ проверить входные значения - просто использовать JS и ввести в консоли что-то вроде $("#foo").val();.

...