onkeypress + onblur в javascript - PullRequest
       0

onkeypress + onblur в javascript

0 голосов
/ 09 декабря 2011

Событие onblur в javascript запускается, когда элемент теряет фокус.

onkeydown Происходит на элементе, который находится в фокусе при нажатии клавиши, и происходит периодически, пока клавиша не будет отпущена.

Если я хочу проверить поле даты, событие onkeydown касается 9 и 13 (ввод и клавиша табуляции). Но когда я нажимаю клавишу ввода, я получаю двойное предупреждающее сообщение. Конечно, в этом случае у нас есть два теста, 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
      }
    }
}

Итак, проблема в том, чтобы один отображал предупреждающее сообщение. Какие-либо предложения?

Ответы [ 2 ]

2 голосов
/ 12 декабря 2011

Вы можете сделать это легко с помощью 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
       }
    }

  }
});

вам не нужно включать onclick или onkeydown в ваш текстовый элемент. Один маленький вопрос, который вы хотите выполнить одинаковые инструкции во всех случаях или разные инструкции ???? если вы хотите выполнить те же инструкции, много кодов можно удалить.

1 голос
/ 09 декабря 2011

в указанном выше решении;keydownFired - true, когда срабатывает размытие и ветвь кода if ничего не делает.так что ничего не происходит.

Если размытие связано с чем-то, кроме показа предупреждения;тогда следующее должно работать.

input.addEventListener('blur', function (e) { 

 doSomethingThatshldHappenAlwaysOnBLur();

    if (keydownFired) { 

      keydownFired = false 

    } else { 
        showAlert();    
  } 
}) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...