Почему не работает .submit()

208
20 декабря 2017, 23:36

 function validate_form ( ) 
{ 
	valid = true; 
	$('input').each(function () { 
		if ( $(this).val() == "" ){ 
			valid = false; 
			if ($(this).hasClass("error")==false)  
				$(this).addClass("error"); 
			 
		}else{ 
			if ($(this).hasClass("error"))  
				valid=false; 
		} 
	}) 
    
	return valid; 
} 
$(".button").click(function(){ 
		//on('click', function(e) { 
		 
	 
		if (validate_form() ) { // проверка на валидность 
			//$(this).closest("form").submit(); // и так не работает 
			 
			console.log("submit"); 
			$("#reg_form")[0].submit(); 
			return false; 
		}else{ 
			//$(".checkbox.required").addClass("error").next(".checkbox-custom").addClass("error"); 
		} 
		 
	});
<form method="post" action="/registration/" name="regform" id="reg_form" enctype="multipart/form-data"> 
   <input size="30" type="text" name="REGISTER_N" value=""/> 
   <input size="30" type="text" name="REGISTER_S" value=""/> 
   <input type="button" class="button"  value="Зарегистрироваться" /> 
</form>

Вопрос, почему не работает.... submit и как исправить? ошибки в консоли нет.

$("#reg_form").submit( 
				function () { 
					console.log("Send"); 
					return false; 
				} 
			);

слово "Send не пишет в консоль"...

$(".button").click(function(){ 
		//on('click', function(e) { 
		 
	 
		if (validate_form() ){  // проверка на валидность 
			//$(this).closest("form").submit(); // и так не работает 
			 
			console.log("submit");//пишет 
			$("#reg_form").submit( 
				function () { 
					console.log("Send"); //не пишет 
					return false; 
				} 
			); 
			return false; 
		}else{ 
			//$(".checkbox.required").addClass("error").next(".checkbox-custom").addClass("error"); 
		} 
		 
	});
пробовала дебажить.

Answer 1
$(document).ready(function(){
  console.log("Attach event");
  $("#reg_form").submit(function () {
    console.log("Submit");
    if (validate_form()) {
      console.log("Send");
      return true;
    } else {
      console.log("Not send");
      return false;
    }
  });
});
Answer 2

Вот так будет работать. Добавил немного комментариев.

function validate_form() { 
  valid = true; 
  $('input').each(function() { 
    if ($(this).val() == "") { 
      valid = false; 
      if ($(this).hasClass("error") == false) 
        $(this).addClass("error"); 
 
    } else { 
      if ($(this).hasClass("error")) 
        valid = false; 
    } 
  }) 
 
  return valid; 
} 
 
 
$("#reg_form").submit(function(event) { 
  /* Проверяем на валидность */ 
  if (validate_form()) { 
    console.log("send"); 
    /* Если валидно выполняем код сверху и останавливает работу функции */ 
    return; 
  } 
  /* Выполнится только если невалидно */ 
  console.log("Невалидно"); 
  $(".checkbox.required").addClass("error").next(".checkbox-custom").addClass("error"); 
  /* event.preventDefault(); останавливает отправку */ 
  event.preventDefault(); 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
<form method="post" action="/registration/" name="regform" id="reg_form" enctype="multipart/form-data"> 
  <input size="30" type="text" name="REGISTER_N" value="" /> 
  <input size="30" type="text" name="REGISTER_S" value="" /> 
  <input type="submit" class="button" value="Зарегистрироваться" /> 
</form>

Answer 3

type="submit" нужно добавить в input.

READ ALSO
Оптимизировать вывод ToolTip в компонентах PrimeNG

Оптимизировать вывод ToolTip в компонентах PrimeNG

Делаю небольшой проект на Angular 4 + PrimeNGВ шаблоне одного из компонентов используем компонент ToolTip

232
Скрипт не работает на айфонах

Скрипт не работает на айфонах

Почему данный скрипт не работает на айфонах?

187
Web авторизация по smart-card (смарт картам)

Web авторизация по smart-card (смарт картам)

Необходимо реализовать авторизацию в веб прилажении (Symfony 3x) по smart-card (смарт картам), подскажите как это можно реализовать? Может есть уже...

167