jquery自动完成打开函数被调用两次

时间:2014-11-06 18:43:40

标签: javascript jquery

我有一个函数可以将自动完成功能附加到我传入其中的任何文本框中。如您所见,在打开功能中,最后,我填写用户的单词并选择自动填充的部分,以便他们可以通过按删除键将其删除。我遇到的问题是当我通过按删除删除自动填充/自动选择的部分时,open函数由于某种原因再次运行并再次自动填充该单词。此行为只发生一次。如果我继续并再次删除自动填充的文本,则文本框会保持这种状态。

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函数才会再次运行。如果最后一个字符是数字,则它不会再次运行。

0 个答案:

没有答案