Вход

Просмотр полной версии : валидация формы, поле email


vovasvv
31.12.2008, 20:07
Всех с наступающим!!!!

Я нашел скрипт:

<script type="text/javascript">
function isEmailCorrect(formname, fieldname) {

var re = /^\w+([\.-]?\w+)*@(((([a-z0-9]{2,})|([a-z0-9][-][a-z0-9]+))[\.][a-z0-9])|([a-z0-9]+[-]?))+[a-z0-9]+\.([a-z]{2}|(com|net|org|edu|int|mil|gov|arpa|biz|aero|nam e|coop|info|pro|museum))$/i;
//var re = /^\w+([\.-]?\w+)*@[a-z0-9]+([\.-]?[a-z0-9]+)+\.([a-z]{2}|(com|net|org|edu|int|mil|gov|arpa|biz|aero|nam e|coop|info|pro|museum))$/i;

if(re.test(eval("document.forms['"+formname+"']."+fieldname+".value")))
return true;
else {
alert("Email is incorrect!");
eval("document.forms['"+formname+"']."+fieldname+".focus()");
return false;
}
}
</script>

1) Как его переделать в вид

<script type="text/javascript">
function isEmailCorrect () {
if (если введенный в форме email не удовлетворяет re) {
alert("Email is incorrect!");
return false;
}
return true;
}
</script>

2) Что означает re.test(eval("document.forms['"+formname+"']."+fieldname+".value")

а точнее "re.test" -?

3) Правильно ли я понимаю, что если в самой форме я хочу указать вывод функции как: return isEmailCorrect () - без аргументов, то в коде скрипта вместо "formname" и "fieldname" я должен указать соответствующие свои названия -?

Спасибо!

Андрей Параничев
31.12.2008, 20:46
1) Не понял, оно и так в таком виде, фактически.
2) http://javascript.ru/tutorial/basic/regular-expression
3) Да.

vovasvv
01.01.2009, 06:59
Спасибо. понял - что такое test по существу.
Непонятно, если я напишу

if(re.test(eval("document.forms['"+formname+"']."+fieldname+".value")))
return false;

это же не будет означать, что

если введенный в форме email НЕ удовлетворяет re, то возвращается false - или будет??? Если не будет, то как будет?

Андрей Параничев
01.01.2009, 18:33
vovasvv,
Этот код означает, что если значение поля удовлетворяет регулярному выражению re, то будет возвращено false.

vovasvv
04.01.2009, 17:50
Еще раз спасибо. Все равно НЕ!! понял - как написать:
"если значение поля НЕ УДОВЛЕТВОРЯЕТ регулярному выражению re, то будет возвращено false"?

vovasvv
04.01.2009, 18:51
Все - сам спросил - сам ответил. Всем СПАСИБО!

Мое решение

re.test(eval("document.forma.email.value")) == false