如何使用jquery验证数组名称中的所有文本框值是否为空?

时间:2015-04-21 00:59:10

标签: javascript jquery

我的表格有问题。在我的表单中,用户可以添加多个折扣代码。我需要验证的是两个文本框,它们是'date start'和'date expired',我需要找出它们是否为空。在允许用户再次添加另一行之前。

这是我的代码:

function addProductDiscountCode() {

    var html  = '<tr id="row-count-' + iterator + '">';
        html += '   <td>';
        html += '       <input type="text" name="discount_code[' + iterator + '][code]" class="form-control" readonly="readonly" value="' + code + '" />';
        html += '   </td>';
        html += '   <td class="text-center">';
        html += '       <input type="text" name="discount_code[' + iterator + '][percentage]" class="form-control text-center" />';
        html += '   </td>';
        html += '   <td class="text-center">';
        html += '       <div class="input-group date"><input name="discount_code[' + iterator + '][date_start]" value="" id="start-date-' + iterator + '" placeholder="YYYY-MM-DD" data-date-format="YYYY-MM-DD" class="form-control date_set" type="text" readonly><span class="input-group-btn"><button type="button" class="btn btn-default"><i class="fa fa-calendar"></i></button></span></div>';
        html += '   </td>';
        html += '   <td class="text-center">';
        html += '       <div class="input-group date"><input name="discount_code[' + iterator + '][date_expired]" value="" id="end-date-' + iterator + '" placeholder="YYYY-MM-DD" data-date-format="YYYY-MM-DD" class="form-control date_end" type="text" readonly><span class="input-group-btn"><button type="button" class="btn btn-default"><i class="fa fa-calendar"></i></button></span></div>';
        html += '   </td>';
        html += '   <td style="width: 15%">';
        html += '       <select class="form-control" name="discount_code[' + iterator + '][status   ]">';
        html += '           <option value="0">Disable</option>';
        html += '           <option value="1">Activate</option>';
        html += '       </select>';
        html += '   </td>';
        html += '   <td class="text-center"><button type="button" onClick="removeCode(' + iterator + ');" class="btn btn-danger"><i class="fa fa-minus-circle"></i></button></td>';
        html += '</tr>';

    $("#product-discount-code tbody").append(html);

    iterator++;

    $('.date').datetimepicker({
        pickTime: false
    });

}

这会产生如下一行:

<tr id="row-count-1">
    <td>
        <input name="discount_code[1][code]" class="form-control" readonly="readonly" value="4npi7YIIrv" type="text">   
    </td>
    <td class="text-center">
        <input name="discount_code[1][percentage]" class="form-control text-center" type="text">  
    </td>
    <td class="text-center">       
        <div class="input-group date">
            <input name="discount_code[1][date_start]" value="" id="start-date-1" placeholder="YYYY-MM-DD" data-date-format="YYYY-MM-DD" class="form-control date_set" readonly="" type="text">
            <span class="input-group-btn">
                <button type="button" class="btn btn-default"><i class="fa fa-calendar"></i></button>
            </span>
        </div>  
    </td>   
    <td class="text-center">       
        <div class="input-group date">
            <input name="discount_code[1][date_expired]" value="" id="end-date-1" placeholder="YYYY-MM-DD" data-date-format="YYYY-MM-DD" class="form-control date_end" readonly="" type="text">
            <span class="input-group-btn">
                <button type="button" class="btn btn-default"><i class="fa fa-calendar"></i></button>
            </span>
        </div>   
    </td>   
    <td style="width: 15%">       
        <select class="form-control" name="discount_code[1][status   ]">           
            <option value="0">Disable</option>           
            <option value="1">Activate</option>       
        </select>   
    </td>   
    <td class="text-center">
        <button type="button" onclick="removeCode(1);" class="btn btn-danger">
            <i class="fa fa-minus-circle"></i>
        </button>
    </td>
</tr>

我在添加操作中添加了控制台打印:

$(".date_start").val();
$(".date_end").val();

它只获得第一行的值。我需要

1 个答案:

答案 0 :(得分:1)

jQuery中的getter方法(如.val())将返回集合中第一个元素的值而不是所有元素的值(例如.text()

您可以使用基于循环的逻辑来查看是否所有元素都具有值

var date_set = true;
$('.date_set').each(function () {
    if ($(this).val().length == 0) {
        date_set = false;
        return false;
    }
})