通过复选框无效验证所有人

时间:2013-08-26 06:51:21

标签: jquery

我在第一个<td>中有一个带有复选框的表格,现在我只想检查选中复选框的<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>

验证 - &gt;

$("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 个答案:

答案 0 :(得分: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;
}}

答案 1 :(得分:0)

@dude你在这里有错误

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

应该像

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

休息应该有效,

虽然没有通过