2010-05-13 3 views
4

У меня есть текстовое поле, и всякий раз, когда изменяется значение поля, я хочу проверить и узнать, были ли введены 20 цифр.событие вызова текстового окна javascript при изменении значения

Я думал, что я буду использовать событие onChange, но это, по-видимому, интерпретируется как событие onBlur в IE.

Итак, я думал, что буду использовать onKeyDown, но проблема возникает, если пользователь хочет вставить значение в поле, тогда функция никогда не вызывается.

Нет других ящиков форм, поэтому я не могу полагаться на onBlur или ожидать, что они изменят фокус когда-либо.

Как это сделать?

Я просто хочу оценить значение текстового поля каждый раз, когда изменяется значение текстового поля.

<input type="text" onKeyDown="myfunction()"> 

ответ

10

Эффективный способ заключается в использовании комбинации onkeydown и onpaste, который будет работать в IE, Firefox, Chrome и Safari. Opera здесь странная, потому что она не поддерживает onpaste, поэтому вам, возможно, придется вернуться к onchange для Opera или использовать событие мутации DOMAttrModified, см. Пример ниже.

Internet Explorer также поддерживает onpropertychange, который будет срабатывать при каждом изменении свойств элемента, включая value. Я прочитал, что DOMAttrModified поддерживается Opera и Safari (не уверен насчет Firefox), так что вы можете использовать это в сочетании с IE на onpropertychange (непроверенные):

if ("implementation" in document && 
        document.implementation.hasFeature('MutationEvents','2.0')) 
    myInput.addEventListener("DOMAttrModified", valueChanged, false);  
else if ("onpropertychange" in myInput) 
    myInput.onpropertychange = valueChanged; 

function valueChanged (evt) 
{ 
    var attr; 
    evt = evt || window.event; 
    attr = evt.attrName || evt.propertyName; 

    if (attr == "value") 
     validate(); 
} 
0

использование onKeryPress событие

<input type="text" onKeyDown="CountText(this,200)" onpaste="return false;"> 

    function CountText(field, maxlimit) 
    { 
     if (field.value.length < maxlimit) // if too long...trim it! 
     { 
      return true; 
     } 
     else 
      return false; 
    } 

проверить мою полную статью: http://www.codeproject.com/KB/validation/MyTextBox.aspx

+0

'keydown' и' keypress' - это не то же самое. Выбери один. 'keyup' был бы лучшим, если вы хотите большинство ключевых событий, но не нужно знать, когда клавиши повторяются (вы будете просто уведомлены, когда ключ окончательно выпущен). Если вам необходимо немедленно изменить, используйте «keydown». 'keypress' игнорирует непечатаемые клавиши, например backspace. – Zenexer

0
<script> 

function multy(val) 
{ 
alert(val.value+"--"+val.id); 
} 

</script> 
</head> 
<body> 
<input id="txtdemo" type="text" onchange="multy(this);"></br> 
<input id="txtdemo" type="text" onchange="multy(this);"> 
</input> 
</body> 

Click to see out put screen.

Спасибо .. . :)

Смежные вопросы