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


Автор: katka 19.7.2004, 09:17
Добрые люди, помогите, пожалУЙста! Хочу, чтобы javascript проверял форму, прежде чем она улетит по сабмиту. ИЕ и Опера всё понимают и делают, как надо.
Вот код (пишу его в хеде):

Код

<script language="javascript">
 function checkform(){
result=true;
errcode=0;

 if((vak_form.password.value)!=(vak_form.password2.value)) errcode=4;

 if((vak_form.password.value.length)<6) errcode=3;

 if(vak_form.dp.value.length>255) errcode=2;
 if(vak_form.password2.value.length>255) errcode=2;

 if(vak_form.fil.value=="") errcode=1;
 if(vak_form.life.value=="") errcode=1;

if(errcode==1) { result=false; window.alert("Вы не заполнили одно из обязательных полей!"); }
if(errcode==2) { result=false; window.alert("Длина текста в одном из полей превышает 255 символов!"); }
if(errcode==3) { result=false; window.alert("Длина пароля должна быть не менее шести символов!"); }
if(errcode==4) { result=false; window.alert("Повторный пароль не совпадает с первоначальным!"); }

return result;
 }
</script>


а в форме пишу: onSubmit="return checkform()"

как переделать, чтобы везде работало?

Автор: Fish 19.7.2004, 09:29
А где не работает-то?

Автор: katka 19.7.2004, 09:34
в Нетскейпе не работает. ну, и в Мозиле тоже.. 8(

Автор: Fish 19.7.2004, 10:40
Все дело в onSubmit. Попробуй использовать onBlur в каждом поле. Чтобы он проверял до отправки данных.

Автор: Fish 19.7.2004, 10:56
Или прочитай вот это - [url]
http://devedge.netscape.com/library/manuals/2000/javascript/1.3/guide/evnt.html#1012961
[/url]

Автор: katka 19.7.2004, 11:00
Ох.. Это что же мне каждый раз ругаться на человека, если он решил оставить заполнение поля "на потом"? у меня в анкете довольно много полей будет, плохо.
Самое непонятное: если я эту функцию вешаю на онКлик по кнопке, а в ней насильно пишу vak_form.submit() — всё равно ничего не происходит. И никаких алертов, если форма пустая. Я вот думаю: может, я где глупость какую написала и не заметила? 8(

Всё равно, спасибо. Может, это и выход — если ничего другого не придумаю.

Автор: katka 19.7.2004, 11:15
Почитала, спасибо.

Автор: Fish 19.7.2004, 11:25
Повесь это на onclick submit кнопки.
Код

function checkform(){
if(vak_form.password.value!=vak_form.password2.value){
window.alert("Повторный пароль не совпадает с первоначальным!");
return false;
}
else if(vak_form.password.value.length<6) {
window.alert("Длина пароля должна быть не менее шести символов!");
return false;
}
else if(vak_form.dp.value.length>255 || vak_form.password2.value.length>255) {
window.alert("Длина текста в одном из полей превышает 255 символов!");
return false;
}
else if(vak_form.fil.value=="" || vak_form.life.value=="") {
window.alert("Вы не заполнили одно из обязательных полей!");
return false;
}
else {
return result;
}

Добавлено @ 11:28
Сработает. Ой ошибку заметил.
Код

else {
return result;
}

а надо
Код

else {
return true;
}

Автор: katka 19.7.2004, 13:48
не-а. то же самое.
всё. я забила на это дело 8]

Автор: Cheba 19.7.2004, 14:38
Я вообще-то только начал знакомиться с JavaScript, но всегда обращаюь к объектам предварительно отыскав их. Вот так.
Код
var vak_form = document.getElementById('vak_form');

Вообще-то в Мозилле (и в Нетскейпе) есть JavaScript Console, где отображаются все ошибки скрипта. Если бы мы знали что за ошибка возникает ее было бы гораздо проще исправить.

Автор: Fish 20.7.2004, 08:02
Попробуй такой onClick
Код

onClick = "return checkform(vak_form)"

а в функции
Код

function checkform(vak_form){
......

}


т.е. явно укажи для какой формы относиться функция.

Автор: <Spawn> 20.7.2004, 08:08
Может попоробовать переделать доступ к элементам на document.getElementById, а доступ к свойствам через getAttribute?

Автор: katka 20.7.2004, 09:16
Cheba
Плохо я знакомилась с javascript и грубо обращалась к объектам. +) СПАСИБО. кажется, это помогает.
Действительно, обнаружила в мозилле js-консоль(!) 8) в ней было написано "vak_form is not defined". Когда "отыскала" vak_form, сказало "vak_form has no properties" ..
Ох, возможно это наглость с моей стороны, но.. вы не подскажете, как бы мне отыскать все объекты и их properties? чтобы всё было defined..
<Spawn>
мне нужно писать if( password.getAttribute("value") == password2.getAttribute("value") ) ... ? а как определить password как элемент формы?

Автор: Cheba 20.7.2004, 13:33
Можно отыскивать их так же как и форму, тоесть через document.getElementById.
Можно попробовать доставать их через DOM.

Или можно воспользоваться готовым кодом smile.gif :
HTML
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<script language="javascript">
function check_form(form) {
if (form.password.value != form.password2.value) {
alert('Passwords do not match!');
return false;
}
else
return true;
}
</script>
</head>

<body>
<form action="" method="post" name="vak_form" id="vak_form" onSubmit="return check_form(this)">
Password 1: <input name="password" type="text" id="password">
<br>
Password 2: <input name="password2" type="text" id="password2">
<br>
<input type="submit" name="Submit" value="Submit">
</form>
</body>
</html>

Автор: Sardar 20.7.2004, 13:43
Вот так будет работать:
Код
<script language="Javascript" type="text/javascript">
<!--
function checkform(){
var vak_form=document.getElementById("vak_form");
if(vak_form.elements["password"].value!=vak_form.elements["password2"].value){
  window.alert("Ïîâòîðíûé ïàðîëü íå ñîâïàäàåò ñ ïåðâîíà÷àëüíûì!");
  return false;
} else if(vak_form.elements["password"].value.length<6) {
  window.alert("Äëèíà ïàðîëÿ äîëæíà áûòü íå ìåíåå øåñòè ñèìâîëîâ!");
  return false;
} else if(vak_form.elements["dp"].value.length>255 || vak_form.elements["password2"].value.length>255) {
  window.alert("Äëèíà òåêñòà â îäíîì èç ïîëåé ïðåâûøàåò 255 ñèìâîëîâ!");
  return false;
} else if(vak_form.elements["fil"].value=="" || vak_form.elements["life"].value=="") {
  window.alert("Âû íå çàïîëíèëè îäíî èç îáÿçàòåëüíûõ ïîëåé!");
  return false;
}
return true;
}
//-->
</script>

Автор: katka 20.7.2004, 14:05
аааааааа!! 8D))) Люди!! Спасибо вам, люди! 8)) я уже даже надежду потеряла.. а тут ТАКОЕ! 8) всё работает, сижу кнопку жму, а оно выпрыгивает или не выпрыгивает! 8)

Автор: Aliance 2.8.2004, 18:05
А если сделать так:
onsubmit = "return false;"

А вместо кнопки submit поставь:
<input type="button" onclick="if (checkform()) {this.form.submit()}">

...Если я правильно понял задачу smile.gif

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