Шрифт:
* Ниже приводится образец разметки HTML, использующей этот модуль.
* Zipcode: <input id="zip” type="text"
* data-allowed-chars="0123456789" data-messageid="zipwarn">
* <span id="zipwarn" style="color: red; visibility: hidden">TonbKo цифры</зрап>
*
* Этот модуль полностью реализован в ненавязчивом стиле: он не определяет
* никаких переменных в глобальном пространстве имен.
*/
whenReady(function { // Вызовет эту функцию, когда документ будет загружен
// Отыскать все элементы <input>
var inputelts = document.getElementsByTagName("input");
// Обойти их в цикле
for(var і = 0 ; і < inputelts.length; i++) {
var elt = inputelts[i];
// Пропустить элементы, не являющиеся текстовыми полями ввода
// и не имеющие атрибута data-allowed-chars.
if (elt.type != "text" || !elt.getAttribute(”data-allowed-chars")) continue;
// Зарегистрировать наш обработчик события в этом элементе input
// keypress - старое событие и реализовано во всех броузерах.
// textInput (смешанный регистр символов) поддерживается в Safari
// и Chrome с 2010 года.
// textinput (все символы строчные) - версия проекта
// стандарта "DOM Level 3 Events",
if (elt.addEventListener) {
elt.addEventListener("keypress", filter, false);
elt.addEventListener("textlnput", filter, false);
elt.addEventListened"textinput", filter, false);
}
// textinput не поддерживается версиями IE, в которых не реализован
// метод addEventListener
else {
elt.attachEvent("onkeypress", filter);
}
}
// Обработчик событий keypress и textlnput, фильтрующий ввод пользователя
function filter(event) {
// Получить объект события и целевой элемент target
var е = event || window.event; // Модель стандартная или IE
var target = e.target || e.srcElement; // Модель стандартная или IE
var text = null; // Введенный текст
// Получить введенный символ или текст
if (e.type === "textinput" || e.type === "textlnput")
text = e.data;
else { // Это было событие keypress
// Введенный печатаемый символ в Firefox сохраняется в свойстве charCode
var code = е.charCode || e.keyCode;
// Если была нажата какая-либо функциональная клавиша, не фильтровать ее
if (code < 32 || // Управляющий символ ASCII
е.charCode == 0 || // Функциональная клавиша (в Firefox)