требуется конечный результат проверки формы javascript

#javascript

#javascript

Вопрос:

Привет написал проверку javascript для моей страницы контактов. для этого я использовал функцию switch case. это работает нормально. Но я не смог получить конечный результат как True или false. это означает, что в случае, если все формы допустимы, результат должен быть true, иначе false. как я могу получить результат из моей функции.

это моя функция, которую я написал (мне нравится использовать этот базовый 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 amp;amp; element.nodeType !=1){
                        element = element.nextSibling;
                        element.style.display = 'block';

                    }   
                }

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

                    }   
                }

            }
        }
    }   
  

есть хорошие предложения?

Ответ №1:

возможно, вы можете инициализировать свой myFormStatus значением true, а затем использовать логический оператор ‘amp;’ для каждого логического значения для каждого случая проверки (1 false и ваш последний результат false, а все true делают ваш последний результат true)

хорошая таблица истинности всегда полезна при программировании 😉

Ответ №2:

Изменить на

 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
  }
  

Комментарии:

1. размещение этой строки: var hideSpan = spanHider (ele.nextSibling); показать ошибку. вы можете это исправить?