2010-11-13 21 views
0

我正在使用jQuery UI自動完成功能將數據輸入到輸入字段中,並通過ajax從數據庫中拉出值。這是所有正常的自動完成。當用戶輸入的值不在自動完成下拉菜單中時,我需要通知

但是,用戶可以輸入不在數據庫中的值,我不知道如何處理它。

我試圖避免另一個Ajax調用數據庫更改字段來檢查數據是否是新的。由於我經常使用自動完成,所以我必須編寫許多這樣的檢查。

如果我知道數據是新的,我可以給用戶選項是將它添加到數據庫還是通知它們錯誤輸入。

也許有從用戶輸入一個新值的自動完成通知。

或者也許有辦法限制用戶只能下拉數據。 (這會導致我認爲的其他問題)

或者也許有人有一個更好的主意。

相關問題(或者也許我應該單獨發佈這些)

如何觸發自動完成儘快用戶打開的選項卡到空場? 將minLength的數量設置爲零仍然需要用戶至少按下向下箭頭。

我可以通過編程方式觸發下拉菜單,例如從向下箭頭的圖像中觸發下拉菜單。

感謝

回答

1

嘗試close事件。 (http://docs.jquery.com/UI/Autocomplete#event-close),如果找不到任何東西,自動完成關閉。您可以查看事件以查看導致關閉的原因,如果它是XHR,則應該表示由於未找到任何項目而導致自動填充已關閉。不能保證它會起作用,但它可能值得一試。

+0

有意思。我也會試試這個。 – sdfor 2010-11-13 14:10:34

1

您可以創建這樣一個自定義源功能:

$("field").autocomplete({ 
    source: function(request, response) { 
    fetchFromDB(request.term, function(data) { 
     // if data.length == 0 it was not in DB 
     response(data); 
    }); 
    } 
}); 

隨着fetchFromDB是不管你現在使用得到的結果。

至於觸發自動完成,你可以這樣做:

$("field").focus(function(event) { 
    var e = $.Event("keydown.autocomplete"); 
    e.keyCode = $.ui.keyCode.DOWN; 
    $("field").trigger(e); 
}); 

這應該工作,我用類似的代碼自動完成中的第一個元素的自動觸發選擇下拉。

相關問題