Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/458.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
需要javascript表单验证最终结果_Javascript - Fatal编程技术网

需要javascript表单验证最终结果

需要javascript表单验证最终结果,javascript,Javascript,Hi为我的联系人页面编写了javascript验证。为此,我使用了switch case函数。很好。但我无法得出最终结果是真是假。这意味着,如果所有形式都有效,那么结果应该为真,否则为假。如何从函数中得到结果 这是我编写的函数我喜欢使用以下核心javascript: window.onload = function (){ var subButton = document.getElementById("submit"); subButton.onclick = function

Hi为我的联系人页面编写了javascript验证。为此,我使用了switch case函数。很好。但我无法得出最终结果是真是假。这意味着,如果所有形式都有效,那么结果应该为真,否则为假。如何从函数中得到结果

这是我编写的函数我喜欢使用以下核心javascript:

window.onload = function (){
    var subButton = document.getElementById("submit");
    subButton.onclick = function (){
        var myForm = document.getElementsByTagName('form')[0];
        var myFormStatus = false;
        myElements = myForm.elements;
            for(i=0;i<myElements.length;i++){
                ele = myElements[i];
                if(ele.type == 'text' || ele.type == 'textarea'){
                    switch(ele.id){
                        case 'name':
                        case 'company':
                        case 'message':
                        var valueCheck = textValidation(ele.value);
                        if(valueCheck){
                            var errorSpan = spanMaker(ele.nextSibling);
                            myFormStatus = false;
                        }
                        else{
                                var hideSpan = spanHider (ele.nextSibling);
                                myFormStatus = true;
                        }
                        break;
                        case 'email': 
                            var emailCheck = emailValidation(ele.value);
                            if(!emailCheck){
                                var errorSpan = spanMaker (ele.nextSibling);
                                myFormStatus = false;
                            }
                            else{
                                var hideSpan = spanHider (ele.nextSibling);
                                myFormStatus = true;
                            }
                        break;
                        case 'phone': 
                        var phoneNum = regIsNumber(ele.value);
                        if(!phoneNum){
                            var errorSpan =spanMaker (ele.nextSibling);
                            myFormStatus = false;
                        }
                        else{
                                var hideSpan = spanHider (ele.nextSibling);
                                myFormStatus = true;
                            }
                        break;
                        default :
                        break;
                    }



                }

                function textValidation (text){
                    return !/[^\s]/.test(text); 
                }

                function emailValidation (email){
                    var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
                    return String(email).search (reg) != -1;
                }

                function regIsNumber(fData){
                     var isInteger_re     = /^[\d|\+|\(]+[\)|\d|\s|-]*[\d]$/;
                     return String(fData).search (isInteger_re) != -1;
                }

                function spanMaker(element){
                    while(element && element.nodeType !=1){
                        element = element.nextSibling;
                        element.style.display = 'block';

                    }   
                }

                function spanHider (element){
                    while(element && element.nodeType !=1){
                        element = element.nextSibling;
                        element.style.display = 'none';

                    }   
                }

            }
        }
    }   

有什么好的建议吗?

也许您可以将myFormStatus初始化为true,然后对每个验证案例的每个布尔值使用逻辑运算符“&”,如果1为false,则最后一个结果为false,如果全部为true,则最后一个结果为true

一个好的真值表在编程时总是有用的-

更改为

window.onload = function (){

  var myForm = document.getElementsByTagName('form')[0];
  var myFormStatus = true;
  myForm.onsubmit = function (){

    for(i=0;i<myElements.length;i++){
      ele = myElements[i];
      if(ele.type == 'text' || ele.type == 'textarea'){
         var hideSpan = spanHider (ele.nextSibling);

         switch(ele.id){

           case 'name':
           case 'company':
           case 'message':
             var valueCheck = textValidation(ele.value);
             if(valueCheck){ // should really return FALSE if invalid
               var errorSpan = spanMaker(ele.nextSibling);
               myFormStatus = false;
             }
             break;
           case 'email': 
             var emailCheck = emailValidation(ele.value);
             if(!emailCheck){
               var errorSpan = spanMaker (ele.nextSibling);
               myFormStatus = false;
             }
             break;
           case 'phone': 
             var phoneNum = regIsNumber(ele.value);
             if(!phoneNum){
               var errorSpan =spanMaker (ele.nextSibling);
               myFormStatus = false;
             }
             break;
          } // switch
        }  // if
      }  // for
    } // onsubmit
    return myFormStatus
  }

此行的位置:var hideSpan=spanHider ele.nextSibling;显示错误。你能纠正它吗?