我使用Dojo爲此,但懷疑這個問題是原生的JavaScript而不是特定的dojo。我創建了一個文本框並註冊了一個函數,當onInput事件被觸發時(我已經用onKeyPress,onKeyUp和onKeyDown嘗試了這一點,所以基本上所有的事件將在用戶輸入文本時觸發)。JavasScript文本框值沒有更新,直到焦點丟失
事件被解僱,所以工作很好。問題是在該方法中,我引用了文本框的值,並且沒有更新。該文本框值僅在文本框失去焦點時更新。當我再次輸入框時,我會得到失去焦點後的值,即不包括觸發事件的額外按鍵。所以,這是被稱爲onInput代碼:
console.log("searching for: " + this.textbox.value);
,I'get在控制檯日誌三行如下:
LOG:搜索:
LOG:搜索:
LOG:搜索:
如果我的n點擊網頁的其他位置,然後再返回到文本框,然後再次輸入,說「T」,我得到:
LOG:搜索:TES
如果我再次點擊即可,然後回和類型,說 「1」,我得到:
LOG:搜索:測試
我敢肯定,我犯了一個愚蠢的錯誤的地方。任何人都可以告訴我如何在觸發按鍵類型事件後立即獲取文本框的當前內容,而不是最後一次失去焦點之前的值?
感謝 西蒙
編輯:
按照要求,這裏是代碼(從我SearchUtils.js類),包括設置intermediateChanges屬性爲true它解決了這個問題櫃面它有助於其他任何人蔘考它。
// Create the Search UI
createUI: function (elementName) {
// Get a reference to attach the UI to
var element = dojo.byId(elementName);
if (element) {
// Add a text box to enter the search text
this.textbox = new dijit.form.TextBox({
id: "txtSearch",
intermediateChanges: true
});
this.textbox.on("change", lang.hitch(this, this.search));
this.textbox.placeAt(element);
}
}
請添加您使用的代碼。 –