这段代码不会在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]);
}
});
为什么会这样?
编辑:请注意,即使有提醒,这些值也不会改变:
答案 0 :(得分:2)
正如我在评论中所怀疑的那样,只是Firebug没有正确更新。您不应该信任它显示的输入值属性,因为它们经常过时。
检查输入值的可靠方法是使用JS并在控制台中输入$("#foo").val();
之类的内容。