防止其他事件变更

时间:2010-05-27 06:37:38

标签: javascript

在我的文本框上我有2个事件onchange和keydown(用于输入) 现在我对onchange事件进行了验证,如果任何验证失败,那么我会提高警报 但是当我按下输入按钮如果验证失败,那么我不想执行 keydown事件

任何建议

谢谢, NIK

3 个答案:

答案 0 :(得分:0)

您需要做的是检查keydown上的密钥代码的值是否存在无效表单。 还要定义一个局部变量,假设这两个函数是在同一个上下文中定义的,如果它们不用,则应用于在同一个上下文中调用它们。

此时您可以查看if(event.keyCode != 13 && !invalid){ [Your operations] }

您可以获得有关密钥代码here的更多信息。

我希望这会有所帮助。

答案 1 :(得分:0)

您可能希望创建一个onchange事件将改变的全局变量(boolean)。自动将布尔值设置为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()">

答案 2 :(得分: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()">