2013-08-26 53 views
2

我有一個複選框在第一個<td>,現在我想檢查複選框被選中的那些<tr>表。驗證所有<tr>通過複選框不工作

<table> 
<tr> 
    <th style="width: 5%;">Select</th> 
    <th style="width: 5%;">ID</th> 
    <th style="width: 10%;">Name</th> 
    <th style="width: 5%;">Order</th> 
    <th style="width: 5%;">Price</th> 

</tr> 
<c:forEach var="pack" items="${PackList}" varStatus="rowCounter"> 
    <tr class="allPackClass"> 
     <td class="selective_CatCreation"><input type="checkbox" name="packIdCatCreate" value="${pack.packId}"></td> 
     <td>${pack.packId}</td> 
     <td>${pack.name}</td> 
     <td><input type="text" name="packDisOrder" disabled="disabled" style="width: 20px;" value=""></td> 
     <td><input type="text" name="packPrice" disabled="disabled" style="width: 20px;" value=""></td> 
    </tr> 
</c:forEach> 
</table> 

驗證 - >

$("tr.allPackClass").each(function() { 
     if($(this).is(":checked")== true){ 
      if($(this).closest('tr').find('input:text').val() == ""){ 
       $("#validationDiv_").html("<span style='font-size:12px;color:red;'>Fileds are missing</span>"); 
       return false; 
      } 
     } 
    }); 

請幫幫忙,我哪裏做錯了嗎?

回答

2

if條件不工作,因爲each環內this被引用tr元素,而不是checkbox

變化裏面的TR過濾器,使其只獲取那些TRS與檢查複選框,然後取出if條件裏面

$("tr.allPackClass").has('input[name="packIdCatCreate"]:checked').each(function() { 

$("tr.allPackClass").has('input[name="packIdCatCreate"]:checked').each(function() { 
    var $emtpy = $(this).find('input:text').filter(function() { 
       return $.trim(this.value).length == 0; 
      }); 
    if ($emtpy.length) { 
     $("#validationDiv_") 
       .html("<span style='font-size:12px;color:red;'>Fileds are missing</span>"); 
     return false; 
    } 
}); 

更新

var valid = $("tr.allPackClass").has('input[name="packIdCatCreate"]:checked').filter(function() { 
    return $(this).find('input:text').filter(function() { 
     return $.trim(this.value).length == 0; 
    }).length > 0; 
}).length == 0; 
if (!valid) { 
    $("#validationDiv_").html("<span style='font-size:12px;color:red;'>Fileds are missing</span>"); 
    return false; 
}} 
+0

他有兩個輸入:文本在一個tr。 – xdazz

+0

@xdazz更新應該修復它 –

+0

謝謝,它的工作,但不驗證錯誤 – user2190050

0

@dude你這裏有一個錯誤

if($(this).is(":checked")== true) 

應該像

if($(this).find('[name=packIdCatCreate]').is(":checked")== true) 

休息應該工作,

還沒有經歷過儘管