2012-09-13 44 views
0

根據官方文件,這一事件是:jQuery的自動完成更改事件:這是如何工作的?

當現場模糊觸發,如果該值已經改變;

現在,它是如何知道值是否已經改變?它存儲在什麼地方?我問的原因是:我可以複製這種行爲嗎?

謝謝

+0

通過複製什麼是你想達到的行爲? – Dipak

+1

看看http://stackoverflow.com/questions/6431459/jquery-autocomplete-trigger-change-event – Adrian

+0

@Dipaks:每當用戶通過「TAB」轉義焦點時,我需要控制輸入的行爲** AND * *輸入的內容不會改變。 – Heathcliff

回答

0

這是由瀏覽器解決。您還可以通過一個處理程序連接到onchange事件觸發改變了文本輸入值:

<input onchange="alert('value changed!');" /> 

而且也是在Javascript:

document.getElementById("my_text_input").onchange = function(){ 
    alert("value changed!"); 
} 

當然你也可以複製此行爲。你可以try it yourself here

[編輯]
你有onblur事件,每次用戶離開控件時都會觸發。
你可以跟蹤輸入值,或設置一個標誌,可以接觸兩種變化和模糊事件:

(function(){ 
    var changed = false; 

    document.getElementById("my_text_input").onchange = function(){ 
     changed = true; 
    } 
    document.getElementById("my_text_input").onblur = function(){ 
     if (!changed) { 
      //Your logic here 
     } 
     changed = false; //set it back to false for next loss of focus 
    } 
})(); 
+0

是的,但是「onchange」事件被觸發_whenever_輸入被改變,而不是如果內容改變(例如,如果輸入內部有「string」,然後刪除它並重寫「string」,則事件是觸發)。自動完成版本不會這樣做。它什麼時候檢查值是否相同?否則,更改事件不會被觸發。 – Heathcliff

+0

你錯了,如果你重寫相同的值,它不會觸發。 親身體驗http://jsfiddle.net/rWzqJ/ –

+0

真的,我的不好。儘管如此,我仍然有同樣的問題(請在Dipaks的第一篇文章中看到我的評論):有沒有辦法將它變成一個布爾值?像$(this).isChanged()或其他東西。 – Heathcliff

0

我認爲它存儲的原始值和比較當前值與模糊上的原始值。

如果重複你的意思是觸發事件,那麼你可以在這裏閱讀:​​