2014-05-19 38 views
0

我有一個表單,需要在我的頁面上進行驗證。該表單看起來像這樣: enter image description here行上的jQuery驗證

我想弄清楚最好的方法來確保如果一行中的信息被填寫;那麼需要填寫整行。

正如您在示例中看到的那樣,第3行的費用已填寫,但沒有標題。第4行有標題但沒有費用。我需要在這些類型的東西上拋出錯誤。

有沒有一種簡單的方法來完成這項工作,以確定是否有一塊數據(在3個可編輯字段中的任何一個),那麼整行就需要數據。

感謝您的任何輸入

+0

是記錄數動態還是限制在6? –

+0

現在僅限於6個,但試圖使其更靈活,以防我需要添加更多 – SBB

+0

您是否願意使用基本的jQuery插件,還是僅限於純粹的jQuery和JavaScript? –

回答

0

可能的解決辦法:

$("#mytable tr").each(function() { 
    var anySet = false, allSet = true; 
    $(this).find("td input").each(function() { 
     var somethingInCell = $(this).val().trim() !== ''; 
     anySet |= somethingInCell; 
     allSet &= somethingInCell; 
    }); 
    if (anySet && !allSet) { 
     // there is missing information 
    } 
}); 

UPDATE

$("#mytable").on("input", "input", function(){ 
     var anySet = false, 
      $cells = $(this).closest("tr").find("td input"); 
     $cells.each(function() { 
      var somethingInCell = $(this).val().trim() !== ''; 
      anySet |= somethingInCell; 
     }); 
     $cells.removeClass("has-error"); 
     if (anySet) { 
      $cells.each(function() { 
       if ($(this).val().trim() === '') { 
        $(this).addClass("has-error"); 
       } 
      }); 
     } 
    }); 
+0

這似乎是可能的,但我的問題是;我會在哪裏添加驗證來顯示錯誤消息?我想將類'has-error'添加到缺少的字段中。 – SBB

+0

我會在所有輸入元素的輸入事件中執行此操作 –

1

您必須手動執行此操作。我不會爲你寫整個代碼,但它會是這樣的。

//on hove of each td 
     $('#tableID tr td').hover(function(){ 
//loop each its sibling 
      $(this).siblings().each(function(
//if any sibling is empty return false 
       if($(this).val().trim() == '') 
       { 
        return false; 
       } 
      )); 
//else return true 
        return true; 
     });