Javascript jquery自动完成打开函数被调用两次
我有一个函数,可以将自动完成附加到我传入的任何文本框。如您所见,在“打开”功能的最后,我为用户填写单词,并选择自动填充的零件,以便他们可以通过按delete键将其删除。我遇到的问题是,当我通过按delete删除自动填充/自动选择的零件时,open函数会出于某种原因再次运行,并再次自动填充单词。这种行为只发生一次。如果我继续第二次删除自动填充的文本,文本框将保持这种状态Javascript jquery自动完成打开函数被调用两次,javascript,jquery,Javascript,Jquery,我有一个函数,可以将自动完成附加到我传入的任何文本框。如您所见,在“打开”功能的最后,我为用户填写单词,并选择自动填充的零件,以便他们可以通过按delete键将其删除。我遇到的问题是,当我通过按delete删除自动填充/自动选择的零件时,open函数会出于某种原因再次运行,并再次自动填充单词。这种行为只发生一次。如果我继续第二次删除自动填充的文本,文本框将保持这种状态 function attachAutoComplete(id, webMethod) { $("#" + id).aut
function attachAutoComplete(id, webMethod) {
$("#" + id).autocomplete({
source: function (request, response) {
$.ajax({
url: webMethod,
data: "{ 'pre':'" + request.term + "'}",
dataType: "json",
type: "POST",
contentType: "application/json; charset=utf-8",
success: function (data) {
response($.map(data.d, function (item) {
return { value: item }
}))
}
});
},
messages: {
noResults: '',
results: function () { }
},
minLength: 2,
open: function () {
$('.ui-autocomplete').css('width', '169px');
$('.ui-autocomplete').css('z-index', '10000');
$('.ui-autocomplete').css('list-style-type', 'none');
$('.ui-autocomplete').css('border-width', '1px');
$('.ui-autocomplete').css('border-color', '#b6b6b6');
$('.ui-autocomplete').css('border-style', 'solid');
$('.ui-autocomplete').css('background-color', '#fff');
$('.ui-autocomplete').css('padding', '0px');
$('.ui-menu-item').css('cursor', 'pointer');
var input = $(this),
firstElementText = input.data("ui-autocomplete").menu.element[0].children[0].textContent,
original = input.val();
input.val(firstElementText);
input[0].selectionStart = original.length;
input[0].selectionEnd = firstElementText.length;
},
close: function () {
var input = $(this);
var firstThreeLetters = input[0].id.substring(0, 3);
if (firstThreeLetters == "SNP") {
GetVariantsGene(input);
}
}
});
}
提前谢谢
更新:仅当用户输入的最后一个字符是字母时,“打开”功能才会再次运行。如果最后一个字符是数字,则不会再次运行。您向我们展示了open函数,但没有显示调用它的位置。很明显,函数是起作用的,它被调用的位置和调用的条件是坏的。??JQuery应该会处理这个问题。当您声明$(id).autocomplete{}时,它负责为您调用autocomplete中包含的可选函数……但是它必须在某种按键事件逻辑中激活,或者在其他地方调用。除非显示错误可能发生的位置,否则无法调试它。当菜单打开时,它将被激活。我没有写任何代码来调用它。。。