2013-11-21 71 views
0

我有一個表格像所有元素下方防止表單提交,並得到一個特定類的jQuery

<html> 
    <script> 
    $(document).ready(function(){ 
     // find all the hidden input elements with error_check class 
     var error_elements = $('.error_check') 

     // Loop through each element find if the value equals 'california' 
      error_elements.each(function(){ 
         if (element.value == 'california') 
          // prevent for submission and display alert 
          alert("cannot submit tax for this state") 
         else 
          // submit form 

       }); 
    )}; 
    </script> 
    <body> 
    <form action="{% url 'collect_salextax' %}" method="POST" id="states_form" class="form-horizontal"> 
     <div class="control-group"> 
     {% for state in states %} 
      <p> 
       <input id="error_{{state.0}}" type="hidden" name="{{state.0}} value="{{state.name}}" class="error_check"/> 
       <input id="{{state.0}}" type="text" name="{{state.0}}" class="value_check"/> 
      </p> 
     {% endfor %} 
     </div> 
     <div class="span11 pagination-centered marg_tp38"> 
      <input name="" type="submit" class="btn btn-large big_btn " value="Submit"> 
     </div>       
    </form> 
    <body> 
</html> 

因此,從上面可以看出U我使用的是循環產生段落中的字段和隱藏字段的值將是從array/list

州名所以,當我點擊提交按鈕,它的成功將形成action屬性,並返回結果

所以,任何人都可以,請讓我知道如何做到這一點非常重要早在jQuery中?

但我想做是,當用戶點擊submit按鈕

  1. 我需要讓所有的hidden input elements帶班error_check
  2. 循環遍歷元素和找到每個元素的值,如果元素值 名稱等於"California",然後顯示像「你不能提交稅務 加州」
  3. 否則警報表單提交給action屬性
+0

建議使用的window.onload而不是$(文件)。就緒 –

+0

包裹此驗證' if(element.value =='california')'在提交按鈕點擊處理程序 –

回答

1

,你可以做這樣的:

$("#states_form").submit(function(event) { 
    $(".error_check").each(function(idx, obj) { 
     if ($(obj).val() == 'california') { 
      alert("cannot submit tax for this state"); 
      event.preventDefault(); 
      return false; 
     } 
     else { 
      // submit form 
      return true; 
     } 
    }); 
}); 
+0

它告訴我未捕獲TypeError:對象#沒有方法'val' –

+0

檢查修改現在 –

0

您應該將提交均勻處理程序應用於您的表單。如果某些東西沒有驗證,請添加一個event.preventDefault()以確保表單不提交。

van $form = $('#myForm'); 
$form.on('submit', function() { 
    // handle submit 
}); 
0

你可以試試這個

$('#myForm').on('submit', function (e) { 
    var allInputs = $('.error_check'); 
    for(var i=0; i<allInputs.length; i++) { 
     if(allInputs[i].value == "California") { 
      e.preventDefault(); 
      return; 
     } 
    } 
}); 
+0

它告訴我未被捕獲的TypeError:對象#在控制檯中沒有方法'val' –

+0

o對不起,我的錯誤取代如果條件與此if(allInputs [i] .value ==「California」) –