用户可以输入输入值:
问题是“geo”函数被调用两次,因为在select事件之后调用了change事件。
这是我的代码:
<input id="test">
$("#test").autocomplete({
minLength: 2,
source: "file.php",
select:function(event,ui){
var name = ui.item.value;
geo(name);
},
change: function (event, ui) {
$.ajax({
type:'POST',
async:false,
url:'file2.php',
data:{'name':$('#test').val()},
success:function(r){
o=JSON.parse(r);
geo(o.name);
}
});
}
});
我尝试添加event.preventDefault();像这样:
select:function(event,ui){
var name = ui.item.value;
geo(name);
event.preventDefault();
},
但它不起作用......
有什么想法吗?
答案 0 :(得分:2)
尝试示例:
var selectedName = '';
$("#test").autocomplete({
minLength: 2,
source: "file.php",
select:function(event,ui){
selectedName = ui.item.value;
geo(selectedName);
},
change: function (event, ui) {
if (selectedName === $('#test').val()) {
return;
}
$.ajax({
type:'POST',
async:false,
url:'file2.php',
data:{'name':$('#test').val()},
success:function(r){
o=JSON.parse(r);
geo(o.name);
}
});
}
});
答案 1 :(得分:0)
我认为这一变化与选择回调与输入元素事件的变化不同&amp;选择。
选择列表项触发选择,然后更改 键入只是触发更改
键入触发器“input / keyup / keydown / keypress”事件,当模糊触发“更改”事件时
如何在此处删除选择回调。无论是打字还是选择,无论如何都要改变。如果您不想检查选择,请在ajax之前添加一个确定语句。