2015-01-07 260 views
0

我有一個循環,檢查是否44個字段爲空,並顯示爲null的錯誤消息。我遇到的問題是,即使有空字段,表單在大約2秒後提交。如果發生錯誤,我該如何防止表單提交?Javascript阻止表單提交

@using (Html.BeginForm("Create", "Table1_1", FormMethod.Post, new { onsubmit = "return validateit()", name = "myForm" })) 
{ 



function validateit() { 


var count = 0; 
var track = 0; 
     for (var i = 0; i < fields.length; i++) { 
      var x = document.forms.myForm[fields[i][0]].value; 
      if (x === null || x === "" || x === " ") { 
       count++; 
       document.getElementById("demo" + (i + 1)).innerHTML = "<font style='color:red';>Error: " + fields[i][1] + "</font>"; 
       track++; 
      } 
      else { 
       document.getElementById("demo" + (i + 1)).innerHTML = ""; 
       track++; 
      } 
      if (count > 0 && track > 43) { 
         return false; 
      } 
     } 
+0

你有沒有真正放在你的回報錯誤行設置斷點,以確保它被擊中:

$(document).ready(function(){ $('.form').submit(function(e){ e.preventDefault(); var formCheck = false; //check the form here if it is true, send the form if(formCheck){ $('.form').addClass('checked'); $('.checked').removeClass('form'); $('.checked').submit(); } }); }); 

其他更好的方法將使用required是HTML5表單驗證? –

+1

你爲什麼要測試'null'?特別是使用身份比較器?一個空的input元素的'value',如果爲空,不會是'null',它將是空字符串。 – Robusto

+0

它不,我不知道爲什麼。有44個領域得到檢查。我用警報取代了返回false,看看它是否進入,如果沒有提醒。 –

回答

0
+0

如果未單擊提交按鈕即提交表單,則不起作用。您需要將提交事件綁定到表單,但在檢查表單後強制提交時需要解除綁定事件。 –

+0

您最近的編輯是將提交功能綁定到提交按鈕,它需要綁定到表單,然後您需要考慮在您強制提交時解除綁定事件的必要性,如上所述。否則當你運行'$(「#form」)。submit()'時,submit事件將再次被觸發。 –