2011-10-19 76 views
0

我有这样的代码:是来自其他功能的JS自动完成差异?

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

和它的作品。如果我试图把其他东西放在那儿想:

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

那么它不工作,给这个错误:语法错误:意外的字符串。

我希望能够在source:call之前进行AJAX调用,以便我可以获取要显示给用户的数据。我误解了这个应该如何工作的东西?

谢谢!

回答

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 
+0

是的,这是我正在使用,但不知道如何移动比例子。 – GeekedOut

+0

哦,那么你需要的是这个http://jqueryui.it/demos/autocomplete#remote,再加上一个脚本,输出json格式的数据 – max4ever

+0

,但这个例子与原始链接中的相同。我只是不清楚如何/在哪里做ajax呼叫。 – GeekedOut

3

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

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

所以在那里/我会怎么做ajax调用来填充源代码:? – GeekedOut

+0

如果'source'是一个字符串而不是一个数组,那么自动完成插件将为您调用ajax。请参阅[Remote Datasource](http://jqueryui.com/demos/autocomplete/#remote)示例。 – Dennis

1

.autocomplete()是一个jQuery插件或jQuery UI附加组件,它们都有自己的方法选项和语法。如果除了插件作者所允许的内容以外的任何内容,它将不起作用。

它看起来像你想在自动完成之前或之后运行一些JS。 bassistance.de和jquery ui版本的独立jquery自动完成功能都有一些回调功能,可以让你做到这一点。一旦你找到你正在使用源代码中的哪一个,Google就会为他们提供documebaant。

+0

我对jQuery有点新 - 什么是回调?这是一个不同的方法,而不是做一个AJAX调用并获取字符串值? – GeekedOut