Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Универсальная проверка ввода текстовых полей


Автор: Sardar 17.3.2005, 01:37
Пишем универсальный валидатор текстовых полей:
Код
<script type="text/javascript">
/**
* Обрабатывет все элементы после загрузки
*/
function initFormCheck() {
  var inps=document.getElementsByTagName("INPUT");
  for(var i=0; i<inps.length; i++) {
    if(inps[i].getAttribute("testreg")==null) continue;
    else inps[i].onkeyup=inputTextCheck; 
    inputTextCheck(inps[i]);
  }
}
/**
* Проверка. Реги и прочую инфу берём из аттрибутов тега.
*/
function inputTextCheck(obj) {
  var o=(obj&&obj.tagName)? obj: this;
  var reg=new RegExp("^"+o.getAttribute("testreg")+"$");
  if(reg.test(o.value)) {
    o.className=o.getAttribute("passclass");
    return true;
  } else {
    o.className=o.getAttribute("failclass");
    return false;
  }
}
</script>

<body onload="initFormCheck();">
<!-- пример: допускаем только цифры 0-9 -->
<input type="text" id="str1" name="text1" testreg="[0-9]+" failclass="fout" passclass="pass">
<!-- допускаем что угодно -->
<input type="text" id="str2" name="text2" testreg=".+" failclass="fout" passclass="pass">
<!-- не обрабатываем поле -->
<input type="text" id="str5" name="text5">
<!-- как видно  для обработки требудется три параметра: рег, имя стиля при правильной проверке и имя стиля при ошибке -->
</body>

Стили можно задать какие угодно, по задаче это:
Код
<style type="text/css">
.pass {
  border: 1px solid black;
}
.fout {
  border: 1px solid red;
}
</style>

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)