2012-10-12 107 views
2

我在這裏遇到了麻煩。我無法把我的大腦包裹起來!在表單提交中循環顯示每個「必填」字段

我想要做的是在驗證電子郵件地址之後提交表單,然後再輸入每個我用「必需」類標記的輸入。我真的很感謝有人向我展示過那些如何循環,只有當每一個填入提交。

<script type="text/javascript"> 
    $(document).ready(function() { 
     $('.button').click(function() { 
      var email = $("input.email").val();   
      var filter = /^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/; 
      if(filter.test(email)) { 
       $('input.required').each(function() { 
        var name = $("input.required").val(); 
        if(name != "") { 
         $('#form').submit(); 
        } else { 
         $('#error').show(); 
         return false; 
        } 
       }); 
      } 
      else { 
       $('#error').show(); 
       return false; 
      } 
     }); 
    }); 
</script> 
+0

爲什麼不使用驗證器jquery插件? http://bassistance.de/jquery-plugins/jquery-plugin-validation/ –

回答

8

可以使用.filter()過濾出那些空元素,再檢查與過濾器匹配的元素數量。如果有任何輸入與過濾器匹配,則發生錯誤,不應發佈。類似這樣的:

var emptyFields = $('input.required').filter(function() { 
    return $(this).val() === ""; 
}).length; 

if (emptyFields === 0) { 
    $('#form').submit(); 
} else { 
    $('#error').show(); 
    return false; 
} 
+0

太棒了!謝了哥們! – doublenit

+0

@ user1741957我的榮幸! –

+0

@doublenit通過單擊答案左側的複選標記,可以將對您最有用的答案標記爲「已接受」。只有一個答案可以接受。這將顯示其他人,他們將來可能會讀這個問題,哪個答案對你最有用。接受答案也會使人們更加熱衷於在將來爲您提供幫助,因爲您將來在發佈問題時會顯示您的接受率。 –

3
var isValid = true; // Set the isValid to flag try initially 

    $('input.required').each(function() { // Loop thru all the elements 
     var name = $("input.required").val(); 
     if(name != "") { // If not empty do nothing 

     } else {   
      isValid = false; // If one loop is empty set the isValid flag to false 
      return false; // Break out of .each loop 
     } 
    }); 

    if(isValid){ // If valid submit form else show error 
     $('#form').submit(); 
    } 
    else{ 
     $('#error').show(); 
    return false; 
} 
相關問題