简体   繁体   English

提交AJAX之前的JavaScript验证

[英]JavaScript validation before AJAX submission

I'm trying to validate a form before allowing my ajax submission,however I have two problems. 我试图在允许我的Ajax提交之前验证表单,但是我有两个问题。 The first problem being I don't know how to best go about validating before submission (most professional process). 第一个问题是我不知道如何最好地在提交之前进行验证(最专业的过程)。 The second problem being, what is preventing my validation code I currently from working? 第二个问题是,是什么导致我当前无法使用验证代码? Looking to become more efficient so all input is welcome. 希望变得更有效率,因此欢迎所有输入。 Thanks a ton. 万分感谢。

  $('#form-reg').on('submit', function(){ var bool = false; var name = document.getElementById('#name-reg'); var email = document.getElementById('#email-reg'); console.log(name); console.log(email); if(!/[^a-zA-Z]/.test(name)){ bool = true; } else{ bool = false; } if(bool == true){ console.log(document.getElementById('#name-reg')); $('#form-reg').slideUp('slow'); // serialize the form var formData = $(this).serialize(); console.log(formData); $.ajax({ type : 'POST', url : 'register.php', data : formData, success: function() { alert("Success"); }, error: function(xhr) { alert("fail"); } }) .done(function (data) { document.getElementById('form-reg').reset(); }) .fail(function (error) { alert("POST failed"); }); //return false; } else { alert('try again'); } }); 
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js" type="text/javascript"> <form id = "form-reg"> <label id ="x" for="name">Name</label> <input id="name-reg" name="name"></br> <label id = "y" for="email">Email</label> <input id="email-reg" name="email"></br> <input type="submit" value="submit" id = "submit-reg"> </form> 

The issue with your code is you have to stop the form submit like: 您的代码存在的问题是您必须停止像这样的表单提交:

$('#form-reg').on('submit', function(e){
  e.preventDefault();

and after checking the validation, submit the form if validation succeeds. 然后,在验证通过后,如果验证成功,则提交表单。

Although it is a minor answer, I will post it anyway. 虽然这是一个很小的答案,但我还是会发布它。 The problem looks like the use of 问题看起来像是

var name = document.getElementById('#name-reg'); var name = document.getElementById('#name-reg');

the # is causing the first problem and should be #引起了第一个问题,应该是

var name = $('#name-reg').val(); var name = $('#name-reg')。val();

 $('#form-reg').on('submit', function(){ var bool = false; var name = $('#name-reg').val(); var email = $('#email-reg').val(); console.log(name); console.log(email); if(!/[^a-zA-Z]/.test(name)){ bool = true; } else{ bool = false; } if(bool == true){ console.log($('#name-reg').val()); $('#form-reg').slideUp('slow'); // serialize the form var formData = $(this).serialize(); console.log(formData); $.ajax({ type : 'POST', url : 'register.php', data : formData, success: function() { alert("Success"); }, error: function(xhr) { alert("fail"); } }) .done(function (data) { document.getElementById('form-reg').reset(); }) .fail(function (error) { alert("POST failed"); }); //return false; } else { alert('try again'); } }); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js" type="text/javascript"> <form id = "form-reg"> <label id ="x" for="name">Name</label> <input id="name-reg" name="name"></br> <label id = "y" for="email">Email</label> <input id="email-reg" name="email"></br> <input type="submit" value="submit" id = "submit-reg"> </form> 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM