2010-09-24 63 views
0

我引用在本教程中看到了jQuery自動完成插件代碼: http://net.tutsplus.com/tutorials/javascript-ajax/how-to-use-the-jquery-ui-autocomplete-widget/jQuery的自動完成,如何接受找到與UnFound條款

與本教程中的問題是,它僅支持在服務器上找到的項目。我想要做的是允許用戶使用服務器上的項目(因爲它今天有效),但也允許用戶輸入新值而不會破壞插件...例如,您可以輸入用戶的電子郵件地址,按回車,然後繼續使用該插件,也許然後在服務器上找到另一個項目,並再次擊中回報。

想法?可能?

回答

2

您可以嘗試將正在輸入的內容附加到建議列表中。這樣他們就可以使用「req.term」來選擇他們正在輸入的內容。就像這樣:

//process response 
$.each(data, function(i, val){        
    suggestions.push(val.name); 
}); 
//append what has been typed in so it's available for selection 
suggestions.push(req.term); 
//pass array to callback 
add(suggestions); 

那麼,在選擇:功能,你可以用一個Ajax調用插入選擇到數據庫中,如果沒有已經存在了。

//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"); 

    //insert selected email if doesn't already exists 
}, 

下面是插入你輸入格式化朋友按鍵例如:

$("#to").keypress(function(e){ 
    var code = (e.keyCode ? e.keyCode : e.which); 
    if (code == 13) { //Enter keycode 
     e.preventDefault(); 

     //create formatted friend 
     var friend = $(this).val(), 
      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"); 

     $(this).autocomplete('close'); 
    } 
}); 
+0

這是一個有趣的想法,感謝..關注與它與Facebook的標準,這些天意味着標準不同。有沒有什麼方法可以讓用戶按壓返回或輸入逗號,輸入變成朋友? – AnApprentice 2010-09-24 23:15:28

+0

是的,檢查我更新的樣本。我認爲它會起作用,但你可能需要玩它。 – fehays 2010-09-24 23:35:33