jquery 1.8和自动完成

JqueryUI 1.8 and autocomplete

本文关键字:jquery      更新时间:2023-09-26

我花了好几个小时尝试让各种自动完成插件与JQuery一起工作。

然后我找到了下面的教程:如何使用jQuery UI自动完成小部件

本教程是旧的,使用Jquery 1.4和Jquery UI 1.8。如何修改Javascript代码,使其更符合JQuery2.0和JQuery UI 1.10 ?

<script type="text/javascript">  
$(function(){  
    //attach autocomplete  
    $("#to").autocomplete({  
        //define callback to format results  
        source: function(req, add){  
            //pass request to server  
            $.getJSON("friends.php?callback=?", req, function(data) {  
                //create array for response objects  
                var suggestions = [];  
                //process response  
                $.each(data, function(i, val){                                
                suggestions.push(val.name);  
            });  
            //pass array to callback  
            add(suggestions);  
        });  
    },  
    //define select handler  
    select: function(e, ui) {  
        //create formatted friend  
        var friend = ui.item.value,  
            span = $("<span>").text(friend),  
            a = $("<a>").addClass("remove").attr({  
                href: "javascript:",  
                title: "Remove " + friend  
            }).text("x").appendTo(span);  
            //add friend to friend div  
            span.insertBefore("#to");  
        },  
        //define select handler  
        change: function() {  
            //prevent 'to' field being updated and correct position  
            $("#to").val("").css("top", 2);  
        }  
    });                       
});  

这里似乎有3个问题:

    一个明显的错误是从JQuery UI-1.10中删除的。item的使用。
  1. 当尝试使用两个库的新版本时,它会在文本框中保留默认文本。默认文本来自JQuery-UI CSS,类似于"你有两个结果"。
  2. 似乎使用了JSONP。是否有可能只接受JSON?

任何帮助这将是伟大的!

对,就用JSON。

$('#someField').autocomplete({
      source: "friends.php?autocomplete=someField"
});

这将带一个额外的term参数回调自动完成;并且期望一个字符串数组,或者具有labelvalue属性的对象。

我已经改变了callback参数名称为autocomplete,因为你可能有一个以上;最好使用有意义的& &;描述性术语。

见:http://docs.jquery.com/UI/API/1.8/Autocomplete