jQuery自动完成的错误

时间:2011-06-27 21:30:04

标签: javascript jquery jquery-autocomplete

这段代码不会在result()的回调函数中执行代码块:

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 个答案:

答案 0 :(得分:2)

正如我在评论中所怀疑的那样,只是Firebug没有正确更新。您不应该信任它显示的输入值属性,因为它们经常过时。

检查输入值的可靠方法是使用JS并在控制台中输入$("#foo").val();之类的内容。