2009-09-23 59 views
3

我有一個選擇,我想運行各種功能,取決於選擇什麼。我還使用flexselect插件http://rmm5t.github.com/jquery-flexselect/將選擇框轉換爲組合框。結果是一個輸入框。jQuery:輸入變化時的事件

我想在輸入框文本改變時運行一個函數,不是模糊,而是立即。我看不出有什麼辦法可以做到這一點。我不能只做一個keyup,因爲通常這個選擇是從flexselect下拉菜單中發生的,而不是鍵入的。使用更改事件需要輸入框模糊,這不是用戶期望的行爲。

有沒有解決這個問題的方法?

謝謝!

+0

+1,因爲「當輸入框文本會改變,而不是模糊,但是馬上就會出現「+ @ pixeline的解決方案在很多情況下非常有用 - 與」flexselect「無關 – perfectionist 2012-02-16 10:21:24

回答

2

這是一個黑客,但你可以修改flexselect.js文件時,它改變文本框的值,以提高自定義事件。在該文件中調用任何地方後「this.input.val(」(如線231)插入:觸發(「myCustomEvent」);然後從現有的代碼綁定到它:

$('#selector').bind('myCustomEvent',function(){ 
     alert('myCustomEvent'); 
}); 
+0

偉大的建議,完全忘記你可以做到這一點! – Jourkey 2009-09-24 02:47:43

0

你爲什麼不使用onblur和onkeyup的組合?

當然,你也可以創建一個計時器(window.setTimeout) - 不是一個很好的或鼓勵的方式來處理這個,但它應該工作。

+0

這是因爲onblur需要模糊,這是一個很大的可用性問題。是最後的手段... – Jourkey 2009-09-23 07:06:07

7

請注意,jquery bind()允許多個事件。

$('#selector').bind('keyup mouseup change',function(e){ 
     alert(e.type); 
}); 
+0

記錄它的keyup mouseup變化 – Jourkey 2009-09-24 22:15:48

+0

更正,謝謝! – pixeline 2009-09-25 08:45:57