2012-04-14 34 views
3

我正在試圖製作一個簡單的搜索框。在輸入框中輸入單個字母后,如何才能觸發某個功能?我使用.keyup,但這似乎是無用的,因爲當輸入一個變音符時,該函數被觸發三次。因爲它們觸發A,S,L,Z,Z,C,等在輸入框中輸入單個字母后用jQuery觸發函數

我不能使用.keypress或.keydown:除非你輸入任何音調符號的字符

<input id="text" type="text" /> 
<div></div> 
<script> 
    $('#text').keyup(function(){ 
     $('div').append('TEST'+$(this).val()); 
    }); 
</script> 

上面的代碼工作正常輸入字符之前的函數。

日後進行編輯:每次信打時間

我知道,我的例子可能不夠清楚瞭解的問題,但是......在我的實際代碼,執行一個SQLite查詢。如果輸入一個變音符或大寫字母,則查詢會執行三次或兩次,這會減慢整個腳本的速度。如果您在計算機Web瀏覽器中執行該腳本,這不會產生太大的影響,但移動瀏覽器中的延遲很大。

+1

只是防止做輪班,CTRL-ALT什麼,應該工作 – ajax333221 2012-04-14 23:56:15

回答

5

具體的關鍵我認爲檢查相比,它改變了最後一次的字符串值。所以按鍵不會運行該函數,除非它導致字符串被改變。

http://jsfiddle.net/82sTJ/1/

+0

你和用戶1078510的答案都能解決我的問題。但是,您的解決方案無需編輯即可運行,因此我決定將您的答案標記爲「已接受」。謝謝你的幫助! :) – lukeshek 2012-04-15 00:32:33

4
var i = 0;  

$('#text').keyup(function(event) { 
    i++; 
    if(i == 1) 
    { 
     $('div').append('TEST'+$(this).val()); 
    } 
}); 

這對我來說應該工作,你也可以檢測正在進入

+0

你是非常接近!我添加了更多的代碼,它完美的工作!你的代碼只需要:.keydown(function(event){i = 0;}); – lukeshek 2012-04-15 00:20:21

+0

很高興能幫到你! – 2012-04-15 01:10:09

相關問題