Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Validation script (https://javascript.ru/forum/dom-window/55996-validation-script.html)

Doraemon 25.05.2015 00:13

Validation script
 
Я написала простой скрипт, где пользовательбкогда заполняет форму правильноб переходит на другую страницу, иначе выводится сообщение об ошибке в заполнении формы. Однако же, новая страницабнесмотря на мои старания, открывается всегда.
Буду признательна за подсказку.

<!DOCTYPE html>
<html>
	<head>
	
		
		<script type = "text/javascript">
		
				function overallcheck ()
			{
				if(!checkjob()|| !checkEmail()|| !Checkname())
				{writeTo("problemArea","Error messages area");
				return false;
				}
				if(!Checkname())
				{writeTo("problemArea","Please inser a valid name");
				return false;
				}
				if(!checkEmail())
				{writeTo("problemArea","Please inser a valid email");
				return false;
				}
				if(!checkjob())
				{
				writeTo("problemArea","Please inser your job");
				return false;
				}
				else {
				return true;
}
			}
			function Checkname(){
				clearElement("problemArea");
				var fullname = document.forms['form'].fullname.value;
				if (fullname.length == 0 || !isNaN(fullname)) 
					return false;
				}
			function checkEmail(){
				clearElement("problemArea");
				var mail = document.forms['form'].Email.value;
				if (mail == '' || mail.indexOf('@') == -1 || mail.indexOf('.') == -1) 
					return false;}
			}
			function checkjob()
			{
				clearElement("problemArea");
				var i;
				for (i=0;i<4;i++)
				{
					if (document.forms['form'].job[i].checked) {return true;}
				}
				return false;
			}
			
		//--> 
		</script>

	</head>

	<body>


<form onsubmit="return overallcheck();" action="res.html" id=form target="_blank" method="GET">
			<table>
				
				<tr>
					<td><b><p>name</p></b> </td>
					<td> <input type="text" name="fullname"  size="20" placeholder="Enter a valid name"/> </td>
				</tr>
				
				<tr>
					<td><b><p> E-mail: </p></b></td> 
					<td><input type="email" name="Email" maxlength="15" size = "20" placeholder="Enter a valid email address"/> </td>
				</tr>
				
<tr>
<p><td><b><p>job?</p></b> <br/></td></p>
				<td>1<input type="radio" name="job" value="gov" /><br/>
				2 <input type="radio" name="job" value="pri" /><br/><div id="problemArea"> </div>
				3 <input type="radio" name="job" value="unem" /><br/>
                                4 <input type="radio" name="job" value="other" /><br/>
								
</td></tr>

			
			</table>
			<p>
				<button type="submit" onclick="" >submit</button>



			
		</form>
</body>
	
</html>

рони 25.05.2015 00:20

Doraemon,
что такое
Цитата:

Сообщение от Doraemon
writeTo

и зачем
Цитата:

Сообщение от Doraemon
42 }


Doraemon 25.05.2015 00:24

WriteTo пишет сообщение об ошибке в поле для ошибок.
42 я что-то нигде не вижу...

рони 25.05.2015 00:32

Doraemon,
строка 42 там у вас фигурная скобка зачем ?
Цитата:

Сообщение от Doraemon
WriteTo пишет сообщение об ошибке в поле для ошибок.

где эта программа и куда она пишет?

Doraemon 25.05.2015 00:39

Спасибо! поправила скобку, но проблема осталась прежней.
Насчет поля для ошибок, см. строку 78.
Кои-какие неважные куски кода я убрала для краткости

рони 25.05.2015 01:58

Doraemon,
все функции проверки должны возвращать true если всё ок ,
как работают функции clearElement и writeTo известно только вам

Doraemon 25.05.2015 02:24

С ними все ок, поэтому я их опустила.
https://www.dropbox.com/s/i9pgy0v8dc...dache.rar?dl=0
здесь мой полный код.
Что интересно, сейчас, когда я кое-что исправила (к лучшему...), выдает ошибку всегда и не дает перейти на другую страницу.

kostyanet 26.05.2015 14:44

Скорее всего overallcheck попросту вываливается где-то по ошибке, а ТС в консоль не догадается заглянуть.

рони 26.05.2015 14:51

Цитата:

Сообщение от kostyanet
Скорее всего overallcheck попросту вываливается где-то по ошибке, а ТС в консоль не догадается заглянуть.

решение давно было подсказано
Цитата:

Сообщение от рони
все функции проверки должны возвращать true если всё ок

когда ТС добавит return true, проблема исчезнет . а вам как всегда лишь бы брякнуть.

kostyanet 26.05.2015 14:55

Цитата:

Сообщение от Doraemon
Я написала простой скрипт

Это не простой скрипт. Вот такой вот простой:

var valid=function(el){
  var pat=el.getAttribute('pattern');
  if(!pat)
    return true;
  pat= new RegExp(pat);
/*
тут я не помню каким методом надо проверять, exec или test
в общем если проверка по шаблону не проканала, то
*/
   throw el.getAttribute('err');
 else
   return true;
};
try{
  for(var el,elems=form.elements;el=elems[i];i++)
     valid(el);
}
catch (e){
  problemArea.textContent=e;
  return false;
}


Таким образом на рендере формы вы забиваете атрибуты паттерн и ерр данными из модели формы.


Часовой пояс GMT +3, время: 08:51.