简体   繁体   English

jQuery和Ajax表单验证功能

[英]Jquery & Ajax Form Validation function

I'm trying to find a way to do a form validation with Jquery. 我正在尝试找到一种使用Jquery进行表单验证的方法。 I currently have a problem with the validation function. 我目前对验证功能有疑问。 I am able to send the form without having anything in the input fields. 我可以发送表单,而无需在输入字段中输入任何内容。 Could you please tell me the way to make it work. 你能告诉我如何使它工作吗。

  function Valid(){ var name1 = false; var name2 = false; var num = false; var mail = false; var msg = false;     if (document.myForm.name.value ==="") {          $('#name1').addClass('has-error');          $( "#name2" ).click(function(){$("#name1").removeClass('has-error');});          name1 = false;}            if (!/^[a-zA-Z]*$/g.test(document.myForm.name.value)) {          $('#name1').addClass('has-error');          $('#name2').click(function(){$('#name1').removeClass('has-error');});          name2 = false;}       if (document.myForm.num.value.length < 17){          $('#num1').addClass('has-error');          $( "#num2" ).click(function(){$("#num1").removeClass('has-error');});          num = false;}       if (document.myForm.email.value === "") {          $('#email1').addClass('has-error');          $( "#email2" ).click(function(){$("#email1").removeClass('has-error');});          mail = false;}       if (document.myForm.message.value === "") { $('#msg1').addClass('has-error');          $( "#msg2" ).click(function(){$("#msg1").removeClass('has-error');});          msg = false;} }// END VALIDATION   function SubmitFunction(){          if(Valid()){          $.ajax({              type: "POST",              url:"../php/process.php",              data: $('form.contact').serialize(),              success: function(msg){                $("#myModal").modal('hide');                $("#msgsuccess").delay(500).fadeIn(500).delay(1000).fadeOut(500);                }             });//End         }        }//End SubmitFunction 

Thank you in advance !! 先感谢您 !!

Add return false; 添加return false; to all your if-statements, and use return true; 到所有if语句,并使用return true; at the bottom. 在底部。

Also, always do your validation twice, server-side and client-side. 另外, 始终在服务器端和客户端两次进行验证。 Client-side isn't nessecary, but serverside is . 客户端不是必需的,但是服务器端是

Edit: Also, please note, after each return, your function just stops working. 编辑:另外,请注意,每次返回后,您的函数都将停止工作。 So if for example input 1 and 4 wasn't filled in, it will return false at input 1, and it won't check input 4 until next time you submit it and input 1 being filled in. 因此,例如,如果未填写输入1和4,它将在输入1处返回false,并且直到下一次提交它并填写输入1时,它才会检查输入4。

Edit 1: Which can be eliminated by doing it this way: 编辑1:可以通过这种方式消除:

 function Valid() {
         var name1 = false;
         var name2 = false;
         var num = false;
         var mail = false;
         var msg = false;
         var error = false;

         if (document.myForm.name.value === "") {
             $('#name1').addClass('has-error');
             $("#name2").click(function() {
                 $("#name1").removeClass('has-error');
             });
             name1 = false;
             error = true;
         }
         if (!/^[a-zA-Z]*$/g.test(document.myForm.name.value)) {
             $('#name1').addClass('has-error');
             $('#name2').click(function() {
                 $('#name1').removeClass('has-error');
             });
             name2 = false;
             error = true;
         }
         if (document.myForm.num.value.length < 17) {
             $('#num1').addClass('has-error');
             $("#num2").click(function() {
                 $("#num1").removeClass('has-error');
             });
             num = false;
             error = true;
         }
         if (document.myForm.email.value === "") {
             $('#email1').addClass('has-error');
             $("#email2").click(function() {
                 $("#email1").removeClass('has-error');
             });
             mail = false;
             error = true;
         }
         if (document.myForm.message.value === "") {
             $('#msg1').addClass('has-error');
             $("#msg2").click(function() {
                 $("#msg1").removeClass('has-error');
             });
             msg = false;
             error = true;
         }
         if(error === true) {
             return true;
         } else {
             return false;
         }
     } // END VALIDATION

 function SubmitFunction() {
         if (Valid()) {
             $.ajax({
                 type: "POST",
                 url: "../php/process.php",
                 data: $('form.contact').serialize(),
                 success: function(msg) {
                     $("#myModal").modal('hide');
                     $("#msgsuccess").delay(500).fadeIn(500).delay(
                         1000).fadeOut(500);
                 }
             }); //End 
         }
     } //End SubmitFunction

What this does is, it sets the error variable to false at the initialization of the function, but each time there is an error, it sets it to true. 它的作用是,在函数初始化时将error变量设置为false,但是每次出现错误时,都将其设置为true。 At the end of the function simply check if the error variable is true, if not, return false, if yes, return true. 在函数末尾,只需检查错误变量是否为true,否则返回false,如果是,则返回true。

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

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