2011-09-16 30 views
3

所以我的工作,我想在兩種情況下後觸發事件(客戶端,JavaScript)的東西:建議「輸入單詞」事件

  • 如果用戶輸入了一個單詞,例如:「堆棧」(被解僱,用「堆棧」作爲單詞)
  • 如果2秒過去了。這將處理「硬道理」。 (如後面沒有空格)

所以,總結一下,這裏是因爲我打字怎麼會火:

堆棧」(REQ#1解僱 - 「堆棧」)

溢出」(REQ#1發射 - 「溢出」)

岩石」(REQ#3發射 - 「岩石」)

希望這是有道理的。我想我需要鉤入.keypress()事件(我使用jQuery BTW),然後做一些字符串魔術(例如尋找空格等)

這很簡單嗎?或者在那裏有東西(例如「擴展的」.keypress()處理程序)已經做到了這一點?

+0

您應該可以看到在點火之前按空間後是否等待500毫秒會更方便用戶(如懸停意圖)。你當然也應該檢查他們是否已經按下了雙重空間,或者可能用空白的單詞開火是好的。不知道等待2秒是否重要,只需使用onblur。 – davin

+0

@達文 - 是的,當然,我會試驗。只需尋找關於如何解決這個問題的一般性建議,就jquery事件而言。 (按鍵,keydown,鍵盤等) – RPM1984

回答

0

我想:

  • 註冊到輸入keyup事件$("input").bind("keyup", function(e){ });
  • 檢查按下的鍵是空格鍵if(e.keyCode == 32)
  • 如果是,從輸入獲得的最後一個字$("body").trigger('input_update', { last-word: false, word: $(this).val()).replace(/[\s-]+$/,'').split(/[\s-]/).pop() });

對於2s計時器,只需在頁面準備就緒後啓動計時器,並在每次觸發輸入上的按鍵事件時重置計時器。晚晴,那些2S,執行的功能應該是這樣的:function(){ $("body").trigger('input_update', { last-word: true, word: $(this).val()).replace(/[\s-]+$/,'').split(/[\s-]/).pop() }); }

而在此之前這一切,註冊您的自定義事件:$("body").bind("input_update", function(e, data){ // do your stuff with the last word });

的代碼可能不是100%正確的,因爲我累了,但你有想法。

+0

不,真的不明白它...我的意思是我的想法,但不知道如何把所有這些代碼塊放入一個可行的JavaScript片.. – RPM1984

0

我不知道這樣的事情是否已經完成,但是有一個簡單的方法來整理它,請檢查this fiddle

+0

謝謝,但也許你可以提供一些你的解決方案的信息? (五。g它是如何工作的) – RPM1984

+0

基本上,它比較了在用戶對值進行調整之前以及之後的單詞集。當他或她的手離開鍵盤(超過'鍵入'的東西)時,你檢查(通過文字(分割)或任何令牌你需要檢查)什麼改變了,並使用你認爲合適的方式。 – Leonid

+0

關於空格:setTimeout的第二個參數可以改爲'e.keyCode == 32? 0:500'。 – Leonid