подскажите кто-нибудь есть ли в jscript функция которая будет распознавать клавиши при нажатии?
мне нужно проследить что пользователь печатает в форме. Знать не только конечный результат, который он отправит на сервер, но и все изменения текста, производимые им в форме.
я так понимаю должна быть функция наподобие OnKeyPressed которая при нажатии клавиши помещает набранный символ, например, в массив
помогите!!! умеет ли jscript распознавать клавиши???
Модератор: Duncon
- Oscar
- Сообщения: 963
- Зарегистрирован: 29 май 2004, 13:44
- Откуда: Мюнхен (рожден в Киеве)
- Контактная информация:
beauty,
как это работает, можешь посмотреть тут (смотри исходник).
Но пользователь ведь может выделить текст и мышкой и по правой кнопке "вырезать" его,
или клавишей del - удалить всё выделение, а если ты будешь проверять только клавиши,
в копии текста, с которой работает JavaScript удалится только один символ (да ещё и тот, который таки остался).
Так что тут нужно многое учитывать.
А потому, самое надёжное, использовать метод onchange:
(c) http://www.devguru.com/Technologies/ecm ... hange.html
Так же полезным может быть событие onblur (когда элемент теряет фокус),
чтобы не проверять каждую клавишу, а обрабатывать все изменения внутри элемента за один раз.
Код: Выделить всё
document.getElementById('myelement').onkeydown=keydownhandler;
Но пользователь ведь может выделить текст и мышкой и по правой кнопке "вырезать" его,
или клавишей del - удалить всё выделение, а если ты будешь проверять только клавиши,
в копии текста, с которой работает JavaScript удалится только один символ (да ещё и тот, который таки остался).
Так что тут нужно многое учитывать.
А потому, самое надёжное, использовать метод onchange:
Код: Выделить всё
<INPUT TYPE="text" VALUE="Enter email address" NAME="userEmail" onChange=validateInput(this.value)>
<script type="text/javascript" language="JavaScript">
this.myForm.userEmail.focus();
this.myForm.userEmail.select();
function validateInput(userInput) {
if (userInput.match("@"))
alert("Thanks for your interest.");
else
alert("Please check your email details are correct before submitting");
}
</script>
Так же полезным может быть событие onblur (когда элемент теряет фокус),
чтобы не проверять каждую клавишу, а обрабатывать все изменения внутри элемента за один раз.