一尘不染

JavaScript中的onkeypress + onblur

jsp

当元素失去焦点时,将触发javascript中的onblur事件。

onkeydown发生在按下键时具有焦点的元素上,并定期发生,直到释放键为止。

如果我想验证日期字段,则onkeydown事件涉及9和13(输入和Tab键)。但是,当我按Enter键时,我会收到重复的警报消息。当然,在这种情况下,我们有两个测试,onblur和onkeydown事件。

这是html代码:

<html:text      onblur="return onDateChange(this);"
        onkeydown="return onDateKeyPress(this);"/>

onDateChange()方法是:

function onDateChange(obj){
//validateField is an externatl javascript method which trigger an alert message if we have errors in date 
        if(validateField(obj,'date',dateFormat)){
        //do instructions
        }
}

最后onDateKeyPress()方法是:

function onDateKeyPress(obj){
    if(window.event.keyCode == 9)
    {  
       if(validateField(obj,'date',dateFormat))
       {
           //do instructions
       }
    }
    if(window.event.keyCode == 13)
    {  
      if(validateField(obj,'date',dateFormat))
      { 
        //do instructions
      }
    }
}

因此,问题是只有 一个 显示警报消息。有什么建议么?


阅读 353

收藏
2020-06-10

共1个答案

一尘不染

你可以用jQuery轻松做到

$('#text_field_id').bind({
  blur: function(event) {
    if(validateField(this,'date',dateFormat)){
        //do instructions
        }
  },
  keydown: function(event) {
    if(event.keyCode == 9)
    {  
       if(validateField(this,'date',dateFormat))
       {
           //do instructions
       }
    }
    if(event.keyCode == 13)
    {  
       if(validateField(this,'date',dateFormat))
       {
           //do instructions
       }
    }

  }
});

您不需要在文本元素中包含onclickonkeydown。您想在所有情况下执行相同指令还是执行不同指令的一个小问题???如果要执行相同的指令,则可以删除许多代码。

2020-06-10