2013-08-18 58 views
0

我使用Dojo爲此,但懷疑這個問題是原生的JavaScript而不是特定的dojo。我創建了一個文本框並註冊了一個函數,當onInput事件被觸發時(我已經用onKeyPress,onKeyUp和onKeyDown嘗試了這一點,所以基本上所有的事件將在用戶輸入文本時觸發)。JavasScript文本框值沒有更新,直到焦點丟失

事件被解僱,所以工作很好。問題是在該方法中,我引用了文本框的值,並且沒有更新。該文本框值僅在文本框失去焦點時更新。當我再次輸入框時,我會得到失去焦點後的值,即不包括觸發事件的額外按鍵。所以,這是被稱爲onInput代碼:

console.log("searching for: " + this.textbox.value);

當我輸入「TES」進入(初始爲空)文本框中

,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); 

     } 

    } 
+0

請添加您使用的代碼。 –

回答

1

如果使用dijit/form/TextBox,您可以設置intermediateChanges屬性爲true。這將使用onKeyPress事件而不是onBlur事件更新小部件的值。

+0

完美的感謝 - 這已經解決了這個問題。 – Kate

相關問題