2014-03-03 24 views
0

我想實現一個「預輸入」類型的功能,但效率芻議原因,以避免返回的可能是成千上萬項列表觸發,我只希望當用戶觸發請求到服務器至少輸入了三個字符。 I.E.在第三個按鍵上,我想通過ajax調用我的服務器端搜索。JSF的Ajax - 對部分完成現場

我不是在尋找一個完整的可運行的例子,只是這如何是可能的,因爲我有點被它難倒草圖。

我的應用程序中有一個通用的ajax處理程序js文件,用於呈現ajax「spinner」,所以我想我可能能夠掛入狀態=「begin」的event方法,並以某種方式中止請求,如果輸入字段少於3個字符,但我不明白這是可能的。

我希望一定JSF大師也許可以點我在正確的方向:)

我使用的是標準的參考JSF2,沒有第三方庫...

+0

剛剛說的,而不是分3個字符您更好(使用'setTimeout'和'clearTimeout')考慮延遲從JS觸發它是你不會在每個keyup上發送ajax,而是在最後一次keyup之後會做500毫秒......更好的UX IMO – Daniel

回答

1

如何加入一個onkeyup="myFunction(event)"您輸入

<input type="text" onkeyup="myFunction(event)"> 

和JS添加以下

function myFunction(e){ 
    if (e.target.value && e.target.value.length > 2) { 
    alert('do some ajax with the value: ' + e.target.value); 
    } 
} 

在JSF中你可以用f:ajax添加一些隱藏的輸入與somethign這樣document.getElementById("myButtonId").click(); Online example

+0

聽起來像一個計劃,一個偷偷摸摸的計劃。我喜歡!我真的需要用我的javaScript更具想象力......我會在今天晚些時候有機會玩這個遊戲時接受它,現在,我還有其他的魚去炸... –

+0

meh,我不能等到我解決了這個其他緊急問題,所以我試了一下 - 是的。像一種享受。我在踢我自己,我沒有想到這一點,但我們最近纔開始使用Ajax。 (我知道這是一個有點可憐的藉口!)類似的「點擊另一件事情來發射ajax」技術可以幫助我解決另一個問題。非常感謝:) –

+0

歡迎:) – Daniel