событие вызова текстового поля javascript при изменении значения - PullRequest
4 голосов
/ 13 мая 2010

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

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

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

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

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

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

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

Ответы [ 3 ]

10 голосов
/ 13 мая 2010

Эффективным способом является использование комбинации 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 голосов
/ 03 августа 2016
    <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.

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

0 голосов
/ 13 мая 2010

использование 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

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