2010-05-27 69 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()">