2010-05-27 60 views
2

在我的文本框,我有2個事件的onchange和的keydown(用於輸入) 現在我做了onchange事件驗證,如果任何驗證失敗,然後我提出警告 但是當我按按回車鍵,如果驗證失敗然後我不想執行 keydown事件防止其它變更事件的keydown

任何建議

感謝, 聶

回答

0

你需要做的是檢查的keydown關鍵代碼的值無效形式。 另外定義一個局部變量,假設2個函數在同一個上下文中定義,如果他們不使用apply在同一個上下文中調用它們。

在那你可以有一個檢查if(event.keyCode != 13 && !invalid){ [Your operations] }

你能得到關於鍵碼here的更多信息。

我希望這會有所幫助。

0

你會想創建一個全局變量(布爾),你的onchange事件將會改變。自動將布爾值設置爲false後,驗證後將其更改爲true。在keydown事件被觸發後,您將需要檢查並確定它是否爲回車鍵,並在採取任何進一步行動之前通過了所有驗證。

<script type="text/javascript"> 
    var passedChecks = false; 

    function validateText(e) { 
      var src = (window.event) ? window.event.srcElement: e; 

      if (src.value == b) { // verify your logic is true. 
       passedChecks = true; 
      } 
    } 

    function validateKey(e) { 
      var src = (window.event) ? window.event.srcElement: e; 

      if (src.keyCode == 13) { 
       if (passedChecks == true) { 
        // process your code. 
       } 
      } 
    } 
</script> 

<input type="text" id="myText" onchange="validateText()" onkeydown="validateKey()"> 
0

不知道你想要什麼,但如果你想控制你可以做一個這樣的keydown事件:

<script type="text/javascript"> 

function onKeyDown() 

{ 
    if(event.keyCode == 13) // if enter key 
    { 
// your validation-checking code here 
     if("validationfailed") 
     return false // prevent the event from happening if validation failed 
     else return true;// validating ok, allow it. 
    } 
    else 
    { 
     // another key, alow it. 
     return true; 
    } 
} 

</script> 
<input type="text" id="myText" onchange="validateText()" onkeydown="return onKeyDown()">