有沒有辦法讓keyup
, keypress
, blur
和change
事件在一行中調用相同的函數,仍是必須單獨執行? jquery
我遇到的問題是我須要使用數據庫查找驗證一些數據,而且但願確保在任何狀況下都不會錯過驗證,不管是鍵入仍是粘貼到框中。 數據庫
從jQuery 1.7開始, .on()
方法是將事件處理程序附加到文檔的首選方法。 對於早期版本, .bind()
方法用於將事件處理程序直接附加到元素。 api
$(document).on('mouseover mouseout',".brand", function () { $(".star").toggleClass("hovered"); })
我正在尋找一種方法來獲取事件類型,當jQuery一次監聽多個事件時,谷歌把我放在這裏。 函數
因此,對於那些感興趣的人, event.type
是個人答案: this
$('#element').on('keyup keypress blur change', function(event) { alert(event.type); // keyup OR keypress OR blur OR change });
jQuery doc中的更多信息。 spa
您能夠使用bind方法將函數附加到多個事件。 只需傳遞事件名稱和處理函數,以下代碼所示: code
$('#foo').bind('mouseenter mouseleave', function() { $(this).toggleClass('entered'); });
另外一種選擇是使用jquery api的連接支持。 seo
您能夠使用.on()
將函數綁定到多個事件: 事件
$('#element').on('keyup keypress blur change', function(e) { // e.type is the type of event fired });
或者只是將函數做爲參數傳遞給普通事件函數: element
var myFunction = function() { ... } $('#element') .keyup(myFunction) .keypress(myFunction) .blur(myFunction) .change(myFunction)
若是您將相同的事件處理程序附加到多個事件,您常常遇到一次觸發多個事件的問題(例如,用戶在編輯後按Tab鍵; keydown,change和blur可能所有觸發)。
這聽起來像你真正想要的是這樣的:
$('#ValidatedInput').keydown(function(evt) { // If enter is pressed if (evt.keyCode === 13) { evt.preventDefault(); // If changes have been made to the input's value, // blur() will result in a change event being fired. this.blur(); } }); $('#ValidatedInput').change(function(evt) { var valueToValidate = this.value; // Your validation callback/logic here. });