Проблема в определении строки Javascript
Код:
<script type="text/javascript">
<!--
function eror(){
var prov = document.forma.nameu.value;
if(/^[а-яё]+$/i.test(prov)!==true){alert('Проверьте провильность написания')}
}
//-->
</script>
<!--
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" onBlur="eror()" />
</p>
<p class="parametr">
<label for="email">Введите имя</label>
<input type="text" name="nameu" class="keywords" onblur="eror()" />
</p>
</fieldset>
</form>
<fieldset>
<p class="parametr">
<label for="name">Введите фамилию</label>
<input type="text" value = "Имя" name="lname" class="keywords" onBlur="eror()" />
</p>
<p class="parametr">
<label for="email">Введите имя</label>
<input type="text" name="nameu" class="keywords" onblur="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>
<!--
function eror(){
var prov = document.forms[0].elements[1].value;
if(/^[а-яё]+$/i.test(prov)!==true){alert('Проверьте провильность написания')}
}
//-->
</script>
то ничего на странице не происходит, я как бы новичек в javascript и имеющаяся у меня литература не дает решение моей проблемы. по сути почему я хочу перейти на массив forms[] тока для того чтоб упростить код и через цикл задать проверку. не вариант думаю прописывать под каждый input свою функцию или же в каждый input вставлять строки onblur="(сюда)". Подскажите как можно сделать переборку значений value в input в функции, цикл может я и составлю но при установке конкретных значений массива у меня не работает скрипт , так и если я применю цикл у меня аналогично работать не будет. что то как то так.
Обощу все выше описанное: требуется задача проверки введенных данных на то что введены русские буквы при смене фокуса
Код:
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 ].onblur=function() {
check_field(form.elements[ i ]);
}
}
}
if(typeof old_onload === "function") {
old_onload();
}
}
old_onload = window.onload;
window.onload = my_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 ].onblur=function() {
check_field(form.elements[ i ]);
}
}
}
if(typeof old_onload === "function") {
old_onload();
}
}
old_onload = window.onload;
window.onload = my_onload;
схожим образом можно написать обработчик для submit, а в нём уже пройтись по всем полям.
<script type="text/javascript"> function eror(){ваш код} </script> , если первый вариант то как мне его вызвать в форме? onblur=" ? " , испытал оба варианта, пока успехов нет
раз вы только изучаете javascript, то обратите внимание на Ненавязчивый JavaScript
код у себя не проверял и допустил ошибку - назначение обработчика следует делать в замыкании, вот работающее решение
В примере вызов onload закомментирован, так в jsfiddle это не работает, но в обычных условиях код должен быть рабающим
Код:
if(typeof old_onload === "function") {
old_onload();
old_onload();
пока не пойму для чего, если не сложно в кратце ее значимость
Перед тем, как назначить собственный onload обработчик, сохраняем предыдущий в old_onload. После работы собственного обработчика, вызываем сохранённый. Проверка typeof old_onload === "function", позволяет убедиться в том, что прежде был обработчик.
еще раз спасибо =))