JS自动完成其他功能的差异吗?

时间:2011-10-19 13:39:50

标签: jquery

我有这段代码:

$("input#autocomplete").autocomplete({
    source: ["c++", "java", "php", "coldfusion", "javascript", "asp", "ruby"]
});

它有效。如果我试着把其他东西放在那里,如:

$("input#autocomplete").autocomplete({
alert ("test");
    source: ["c++", "java", "php", "coldfusion", "javascript", "asp", "ruby"]
});

然后它不起作用并给出此错误:语法错误:意外的字符串。

我希望在源代码之前进行AJAX调用:调用以便我可以将数据显示给用户。我是否误解了这应该如何起作用?

谢谢!

3 个答案:

答案 0 :(得分:3)

autocomplete将对象文字作为参数,这是一系列键:值对。 alert("test")是放在其中间的任意代码。

var obj = {
    key1: "value",   //Okay
    key2: false,     //Still okay
    console.log("Hello, World!")  //Bad
};

答案 1 :(得分:1)

.autocomplete()是一个jquery插件或一个jquery ui附加组件,它们都有自己的方法选项和语法。如果除了插件的作者所允许的以外做任何其他事情,它将无法工作。

看起来你想在自动完成之前或之后运行一些JS。由bassistance.de和jquery ui版本独立的jquery自动完成,都有一些回调功能,可以让你这样做。一旦您从源代码中找到正在使用的文件,Google就可以获得其文档。

答案 2 :(得分:1)

查看自动填充事件,我认为“搜索”事件是您需要的事件,这里是一个链接http://jqueryui.com/demos/autocomplete#event-search

这是一个ajax示例

$( "#user_name" ).autocomplete({
            source: "index.php?option=abc",
            delay: 0,
            minLength: 0,
            autoFocus: true,
            select: function (event, ui) {

                    $("#user_id").val(ui.item.id);
                    $(this).data("user_id",ui.item.id);//Store arbitrary data associated with the specified element
                    $(this).data("username",ui.item.value);//Store arbitrary data associated with the specified element

                },
                selectFirst: true,
                autoFill: true,
                mustMatch: true
            })
            .bind("blur",function() {
                var user_id = $(this).data("user_id");
                var username = $(this).data("username");
                if(typeof username === \'undefined\')
                {
                    username = \'\';
                    user_id = null;
                }
                $(this).val(username);
                $("#user_id").val(user_id);
            })


;
    });//fine autocomplete