PHP和JavaScript表单验证问题

4
我使用Bootstrap创建了一个表单,并使用JavaScript进行表单验证,然后使用PHP脚本获取提交的数据并显示它们。基本结构如下,我已经尽可能地简化了它以解决这个特定问题。问题在于,用于检查表单验证的脚本在body末尾的

1
onsubmit 应该是你的验证函数 onSubmit="return CheckForm()" - Sunil Kumar
1
为什么要使用“return”已经有答案了 > https://dev59.com/Vm435IYBdhLWcg3w0TlP - Sunil Kumar
2个回答

5

您应该在提交表单时调用函数,我不知道您当前使用的onsubmit='...'是用来做什么的。

因此,请使用以下代码,在提交表单时调用函数。


```javascript
```

  <form name = "OrderForm" action = "process_order.php" onsubmit = "return CheckForm()" method = "post">
      a bunch of content, divs, checkboxes, etc
  </form>

演示代码:查看代码


我也不知道当时在干什么。谢谢你的答案,我应该意识到这是一个很容易解决的问题,现在一切都按照预期工作了。 - user4746908

0

首先,您可以做的是: 您不需要在另一个if语句中使用!fryes: 您也可以在第一个if语句中执行:

如果 ((Name.value == "" || Name.value == "Name") || (!(document.getElementById("SandwichRadio").checked || document.getElementById("WrapRadio").checked)) || ( (!(fryyes || fryno))) { bool = false; } 此外,如果bool为false,则可以禁用提交按钮吗?

您还可以在文本框上进行更改,这样您就可以逐个验证每个文本框或复选框。并且有bool true和false吗?

我很久以前在jquery上做了类似于此的验证,其中我针对数据库检查每个文本框或下拉列表,然后进行验证。 以下是代码:

<script>
  $(document).ready(function(){
    var works=true; 
    //Coding for the captcha, to see if the user has typed the correct text
    $('#mycaptcha').on('keyup',function(){
        if($('#mycaptcha').val().length>=5){
            $.post("user_test/captcha_check.php",
                {
                // userid: $("#userlogin").val(),
                 mocaptcha: $("#mycaptcha").val(),
                },
                function(data,status){

                    if(data==0){
                        document.getElementById("final_error").innerHTML="Captcha did not match";
                        works=false;    
                    }
                    if(data==1){
                        works=true;
                        document.getElementById("final_error").innerHTML="";
                    }
                });
        }
        });
        //Works like a flag, if any mistake in the form it will turn to false
        //Coding the submit button...
        $('#submitbtn').on('click',function(){
            var arrLang = [];
            var arrPrf  = [];
            uid         = $("#userid").val();
            capc        = $('#mycaptcha').val();
            pwd         = $("#pwd1").val();
            fname       = $("#fname").val();
            lname       = $("#lname").val();
            email       = $("#memail").val();
            pass        = $("#pwd2, #pwd1").val();
            daysel      = $('#dayselect').val();
            monthsel    = $('#monthselect').val();
            yearsel     = $('#yearselect').val();
            agree_term  = $('#agree_box').prop('checked');
             //checks if the textboxes are empty it will change the flag to false;  
            if((!uid) || (!capc) ||(!fname) || (!lname) || (!email) || (!pass) || (!daysel) || (!monthsel) || (!yearsel) || (!agree_term)){
                works=false;
            }
            if(!works){
                document.getElementById('final_error').innerHTML ="<font size='1.3px' color='red'>Please fill the form, accept the agreement and re-submit your form</font>";
            }
            else{
               works=true;
               //A jquery function, that goes through the array of selects and then adds them to the array called arrLang
               $('[id=lang]').each(function (i, item) {

                       var lang = $(item).val();
                       arrLang.push(lang);

                });
                //A jquery function, that goes through the array of select prof and then adds them to the array called arrprf
                $('[id=prof]').each(function (i, item) {

                       var prof = $(item).val();
                       arrPrf.push(prof);

                });
                var data0 = {fname: fname, mlname : lname, userid : uid,password:pwd, emailid : email, mylanguage : arrLang, proficient : arrPrf, dob : yearsel+"-"+monthsel+"-"+daysel};
                //var json = JSON2.stringify(data0 ); 
                $.post("Register_action.php",
                    {
                        // userid: $("#userlogin").val(),
                        json: data0,
                    },
                function(data,status){
                    if(data==1){
                        //alert(data);
                        window.location = 'Registered.php';
                    }
                    document.getElementById("userid_error").innerHTML=data; 
                });
            }
        });
        //to open the agreement in a seperate page to read it.. 
        $("#load_agreement").click(function () {                    
               window.open("agreement.html", "PopupWindow", "width=600,height=600,scrollbars=yes,resizable=no");
        });
        //A code that loads, another page inside the agreement div  
        $( "#agreement" ).load( "agreement.html" );
        //This part here will keep generating, duplicate of the language and profeciency box, incase someone needs it
        $('#Add').click(function(){
            //we select the box clone it and insert it after the box
            $('#lang').clone().insertAfter("#lang").before('<br>');
            $('#prof').clone().insertAfter("#prof").before('<br>');
        });
         //this part here generates number 1-31 and adds into month and days
        i=0;
        for(i=1; i<=31; i++){

            $('#dayselect').append($('<option>', {value:i, text:i}));
            if(i<=12){  
                $('#monthselect').append($('<option>', {value:i, text:i}));
            }
        }
        //this code here generates years, will work for the last, 120 years
        year=(new Date).getFullYear()-120;
        i = (new Date).getFullYear()-16;
        for(i; i>=year; i--){
            $('#yearselect').append($('<option>', {value:i, text:i}));
        }
        //Regex Patterns
        var pass = /^[a-z0-9\.\-\)\(\_)]+$/i;
        var uname = /^[a-z0-9\.\-]+$/i;
        var mname = /^[a-z ]+$/i;
        var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
        //When the Last Name texbox is changing this will be invoked
        $("#fname").keydown(function(){

                //comparing the above regex to the value in the texbox, if not from the box then send error
                if(!mname.test($("#fname").val())){

                    //fill the textbox label with error
                    document.getElementById("fname_error").innerHTML="<font color='red' size='2px' family='verdana'>Invalid FirstName</font>";
                    $("#fname").css("border-color","rgba(255,0,0,.6)"); 
                    works=false;
                }
                else{
                    $("#fname").css("border-color","rgba(0,255,100,.6)"); 
                        document.getElementById("fname_error").innerHTML="";
                        works = true;
                    }       
        });//end of fname onchange
        //When the Last Name texbox is changint this will be invoked
        $("#lname").keydown(function(){
             //comparing the above regex to the value in the texbox
            if(!mname.test($("#lname").val())){

                //fill the textbox label with error
                document.getElementById("lname_error").innerHTML="<font color='red' size='2px' family='verdana'>Invalid LastName</font>";
                $("#lname").css("border-color","rgba(255,0,0,.6"); 
                works=false;
            }
            else{
                $("#lname").css("border-color","rgba(0,255,100,.6)"); 
                document.getElementById("lname_error").innerHTML="";
                works = true;
                }
        });//end of lname on change

        //When the userid textbox is chaning,this will be invoked
        $("#userid").keydown(function(){
            //comparing the above regex to the value in the texbox                                  
            if(!uname.test($("#userid").val())){
                //fill the textbox label with error
                document.getElementById("userid_error").innerHTML="<font color='red' size='2px' family='verdana'>Invalid UserId</font>";
                $("#userid").css("border-color","rgba(255,0,0,.6"); 
                works=false;
            } 
            /*
            else if($("#userid").val().length<4){
                //fill the textbox label with error
                document.getElementById("userid_error").innerHTML="<font color='red' size='2px' family='verdana'>Minimum user length is 4</font>";
                $("#userid").css("border-color","rgba(255,0,0,.6"); 
                //disable the submit button
                //$('#submitbtn').attr('disabled','disabled'); 
                works=false;
            }
                */
            else{
                $("#userid").css("border-color","rgba(0,0,0,.3)"); 
                $.post("user_test/user_email_test.php",
                    {
                        // userid: $("#userlogin").val(),
                        userid: $("#userid").val(),
                    },
                function(data,status){
                    document.getElementById("userid_error").innerHTML=data; 
                });
            works = true;
            }
        });//end of change
        //When the userid textbox is chaning,this will be invoked
        $("#memail").keydown(function(){
            //comparing the above regex to the value in the texbox                                  
            if(!emailReg.test($("#memail").val())){
                //fill the textbox label with error
                document.getElementById("email_error").innerHTML="<font color='red' size='2px' family='verdana'>Invalid Email</font>";
                $("#memail").css("border-color","rgba(255,0,0,.6"); 
                works=false;
            }

            else{
                works = true;

                $.post("./user_test/user_email_test.php",{
                    useremail: $("#memail").val(),
                },
                function(data,status){
                    document.getElementById("email_error").innerHTML=data;
                    $("#memail").css("border-color","rgba(0,255,0,.3)"); 
                    works = true;
                });

                }

        });//end of change
        //When the userid textbox is chaning,this will be invoked
        $("#pwd2").keyup(function(){
            //checking length of the password
            if($("#pwd2").val().length<10){
                document.getElementById("pwd_error").innerHTML="<font color='red' size='2px' family='verdana'>Please enter a password minimum 10 characters</font>";
                //$('#submitbtn').attr('disabled','disabled');
                $("#pwd1, pwd2").css("border-color","rgba(0,255,100,.6)");
                works=false;
            }
            //checking if the password matches  
            else if($("#pwd1").val()!=$("#pwd2").val()){
                document.getElementById("pwd_error").innerHTML="<font color='red' size='2px' family='verdana'>Passwords do not match</font>";
                //$('#submitbtn').attr('disabled','disabled');
                works=false;
                $("#pwd1, pwd2").css("border-color","rgba(0,255,100,.6)");   
            }
            else{
                $("#pwd1, #pwd2").css("border-color","rgba(0,0,0,.3)");
                document.getElementById("pwd_error").innerHTML="";  
                //comparing the above regex to the value in the texbox and checking if the lenght is atleast 10                                 
                if(!pass.test($("#pwd2").val())){

                    //fill the textbox label with error
                    document.getElementById("pwd_error").innerHTML="<font color='red' size='1px' family='verdana'>Your password contains invalid character, Please use: a-z 0-9.( )_- only</font>";
                    $("#pwd1, #pwd2").css("border-color","rgba(255,0,0,.6"); 
                     works = false; 
                } 
                else{
                    $("#pwd1 , #pwd2").css("border-color","rgba(0,255,100,.6)");
                    works = true;

                }
            }
        });//end of change

    });//end of document ready
</script>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接