Валидация работает, но форма отправляется.

Всем здравствуйте. Как отменить отправку формы , если валидация не пройдена? У меня форма отсылается в любом случае. Ниже часть индексного файла
<link rel="stylesheet" type="text/css" href="style.css" />
 <script type="text/javascript" src="js/jquery-1.5.2.min.js"></script>
 <script type="text/javascript" src="js/jquery.validate.min.js"></script>
	<script type="text/javascript" src="js/myscripts.js"></script> 
	<script src="http://jqueryvalidation.org/files/dist/additional-methods.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
 $("#formdata").on("click",function () { //это обработчик нажатия кнопки ОТПРАВИТЬ
 $("#formdata").validate();
 var data = $(this).serialize(); 
 $.ajax({// инициализируем ajax запрос
 type: 'POST', // отправляем в POST формате
 url: 'obrabot.php', // путь до обработчика, у нас он лежит в той же папке
			data: data, // данные для отправки
			cache: false,
			target: '#p1', 
 success: function (data) { 
			if (data ){
				alert ("OKyjyuj");
				$("#p1").text(data);
					}
					else
					{
						alert("no ok");			
					}
						
					} 	
 
			
 });
		return false;
	});
});

</script>


</head>
<body>
<div style="display: flex;">
<p>Введите чило: </p>
<form id="formdata" method="POST" action='obrabot.php' style="margin: 16px;">

 <input name='int' type='int' /> <br /><br /><br />
 
<input type='submit' name='Submit' id="submitsend" value='Отправить' />
 </form>
<p id="p1"></p>

</body>
</html>
Использую jQuery Validation Plugin Ниже файл myscript.js с правилами и сообщениями
$(document).ready(function(){
	jQuery.validator.addMethod(
 'regexp',
 function(value, element, regexp) {
 var re = new RegExp(regexp);
 return this.optional(element) || re.test(value);
 },
 ""
);
 

 $("#formdata").validate({
	
	rules: {
 int: {
 required: true,
 minlength: 4,
 maxlength: 4,
		number : true,
		regexp: '^[1-9]{1}[0-9]*$'
 }

 },
 messages:{
 int:{
 required: "поле не заполнено или заполнено не верно",
 minlength: "в поле должно быть минимум 4 символа",
 maxlength: "В поле должно быть максимум 4 символа",
		number : "В поле должны быть только цифры",
		regexp: "Число не должно начинаться на ноль!!"
			 
 }
 }
 

 });

});
С английским туго )).
9 ответов

Влад_имир, $("#formdata").validate({submitHandler : тут ваш ajax должен бытьhttp://jqueryvalidation.org/validate


Решил , надо было $("#formdata").validate(); сразу после $(document).ready(function(){ вставить.


Влад_имир, строки 8 и 9 в первом коде лишние


а без submitHandler не обойтись?


Влад_имир, строки 8 и 9 в первом коде лишние
удалил, работает )) только на странице обработчике остается, но и после моих манипуляций там же останавливается.


ниже часть файла- обработчика
<? 
require 'function.php';
header("Content-type: text/plain; charset=utf-8");
/* header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false); */
$errors = array();
$str='';
$a=3456;

/* $zifra=0; */
if (isset($_POST['int'])) {$str = $_POST['int'];}
if (isset($_POST['int'])) {$zifra =(int) $_POST['int'];}

/* echo "Переменная \$zifra имеет тип - ". (gettype($zifra)). "<br/>"; */
if ($zifra <= 1000)
{
	$errors[] = "Нельзя вводить число начинающееся с нуля!!";
	 /* echo "Нельзя вводить число начинающееся с нуля!!"; */
} 

$arr1 = str_split($str);
print_r ($arr1);

$length_arr1=count($arr1);
print_r($lenght_arr1);

$result = array_unique($arr1);

$length_result=count($result);
/* print_r($result);
print_r($length_result); */
if ($length_result<$length_arr1)
{
	$errors[] = "Нельзя вводить повторяющиеся цифры!!";
	/* echo "Нельзя вводить повторяющиеся цифры!!"; */
}

 if(isset($errors)){

 
 foreach($errors as $msg){
 echo $msg;
 }
 
 return false;
 }
не пойму почему print_r($lenght_arr1); null? print_r($length_result); - работает


Влад_имир, ждите php специалистов


Влад_имир, ждите php специалистов
они здесь бывают?


если в браузере http://localhost:63342/as/index.php то останавливается на странице обработчика,зато валидация работает на клиенте. а если http://as/ то без перезагрузки и форма все равно отправляется. В чем прикол РОНИ?