Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Проблема в определении строки Javascript

77K
20 марта 2012 года
Voffchik
5 / / 28.01.2012
ситуация такова: есть код на Javascript

 
Код:
<script type="text/javascript">
<!--
    function eror(){
    var prov = document.forma.nameu.value;
    if(/^[а-яё]+$/i.test(prov)!==true){alert('Проверьте провильность написания')}
    }
   
//-->
</script>


и есть форма на HTml:

Код:
<form action="#" method="post" id="contactForm" name = "forma">
      <fieldset>
        <p class="parametr">
          <label for="name">Введите фамилию</label>
          <input type="text" value = "Имя" name="lname" class="keywords"  &#111;&#110;Blur="eror()" />
        </p>
        <p class="parametr">
          <label for="email">Введите имя</label>
          <input type="text" name="nameu" class="keywords" &#111;&#110;blur="eror()" />
        </p>
   </fieldset>
</form>


вот если написано как я приложил то сообщении появляется, но появляется конкретно на то что указал( в данном случае вводимые данные из input с именем nameu)
а если напишу код как:

 
Код:
<script type="text/javascript">
<!--
    function eror(){
    var prov = document.forms[0].elements[1].value;
    if(/^[а-яё]+$/i.test(prov)!==true){alert('Проверьте провильность написания')}
    }
   
//-->
</script>


то ничего на странице не происходит, я как бы новичек в javascript и имеющаяся у меня литература не дает решение моей проблемы. по сути почему я хочу перейти на массив forms[] тока для того чтоб упростить код и через цикл задать проверку. не вариант думаю прописывать под каждый input свою функцию или же в каждый input вставлять строки onblur="(сюда)". Подскажите как можно сделать переборку значений value в input в функции, цикл может я и составлю но при установке конкретных значений массива у меня не работает скрипт , так и если я применю цикл у меня аналогично работать не будет. что то как то так.
Обощу все выше описанное: требуется задача проверки введенных данных на то что введены русские буквы при смене фокуса
285
20 марта 2012 года
Romik
479 / / 24.11.2002
Думаю в вашем случае проверку есть смысл проводить в 2 этапа: на onblur и при submit. В первом случае есть смысл проверять только текущее поле, так как если в цикле проверять все поля, то получите ошибку для полей, которые ещё не заполняли. Для submit проверяйте все поля.

Код:
var check_field, my_onload, old_onload;
chck_field = function(field) {
   if(field.value != "undefined") {
       if(/^[а-яё]+$/i.test(field.value)!==true){
           alert('Проверьте провильность написания');
           field.focus();
       }
   }
}

my_onload = function() {
    var form = document.getElementById("contactForm");
    // назначить обработчики для onblur
    // при этом выбирать поля только типа text
    for(var i in form.elements) {
         if(form.elements[ i ].type == "text") {
               // onblur
               form.elements[ i ].&#111;&#110;blur=function() {
                    check_field(form.elements[ i ]);
               }
         }
    }

    if(typeof old_onload === "function") {
       old_onload();
    }
}

old_onload = window.onload;
window.onload = my_onload;

схожим образом можно написать обработчик для submit, а в нём уже пройтись по всем полям.
77K
20 марта 2012 года
Voffchik
5 / / 28.01.2012
повторюсь что еще учусь javascript, подскажите как мне использовать ваш код. вставить в <script type="text/javascript"> ваш код </script> или
<script type="text/javascript"> function eror(){ваш код} </script> , если первый вариант то как мне его вызвать в форме? onblur=" ? " , испытал оба варианта, пока успехов нет
285
20 марта 2012 года
Romik
479 / / 24.11.2002
код нужно использовать в <script></script> в head, в самом html ничего писать не нужно.
раз вы только изучаете javascript, то обратите внимание на Ненавязчивый JavaScript

код у себя не проверял и допустил ошибку - назначение обработчика следует делать в замыкании, вот работающее решение
В примере вызов onload закомментирован, так в jsfiddle это не работает, но в обычных условиях код должен быть рабающим
77K
20 марта 2012 года
Voffchik
5 / / 28.01.2012
Спасибо, то что надо =)) буду разбираться, основную часть понял, что и зачем идет, а вот
 
Код:
if(typeof old_onload === "function") {
       old_onload();

пока не пойму для чего, если не сложно в кратце ее значимость
285
20 марта 2012 года
Romik
479 / / 24.11.2002
Перед тем, как назначить собственный onload обработчик, сохраняем предыдущий в old_onload. После работы собственного обработчика, вызываем сохранённый. Проверка typeof old_onload === "function", позволяет убедиться в том, что прежде был обработчик.
77K
20 марта 2012 года
Voffchik
5 / / 28.01.2012
еще раз спасибо =))
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог