获取字段集中所有 jquery 输入的值

Get the value of all the jquery inputs within a fieldset

这是我在这里问的第一个问题。 我有一个包含 4 个输入的字段集。如果至少完成 4 个中的 2 个,我想验证该表格。我可以用 $("#communications input").val().

得到第一个输入的值
 <fieldset class="input-group-fieldset bigger-labels" id="communications">
    <div class="row">
        <div class="columns twelve">
            <div class="input-group" id="pref-mail-wrap">
                <label>Email Address</label>
                @Html.TextBoxFor(model => model.PrefferedEmail, new { @class = "contact-group" })

            </div>
        </div>
    </div>
    <div class="row">
        <div class="columns four">
            <div class="input-group" id="pref-phone-wrap">
                <label>Telephone No</label>
                @Html.TextBoxFor(model => model.PrefferedPhoneNo, new { @class = "contact-group" })



            </div>
        </div>
        <div class="columns four">
            <div class="input-group" id="pref-sms-wrap">
                <label>SMS No</label>
                @Html.TextBoxFor(model => model.PrefferedSmsNo, new { @class = "contact-group" })

            </div>
        </div>
    </div>
    <div class="" id="pref-address-wrap">

        <div class="row fixed-width">
            <div class="columns twelve">
                <div class="input-group2">
                    <label>Address </label>

                    @Html.TextBoxFor(model => model.PostalAddress)

                </div>
            </div>

        </div>

提前谢谢你, 科斯塔斯

您可以使用 jquery each() 来返回超过 1 个元素的选择器:

$("#communications input").each(function(){
   // $(this).val(); check here what you want.
})

尝试这样的事情。

var count = 0;
$('#communications input').each(function(index, item) {
    if($(item).val()!=="") {
        count ++;
    }
    return count <= 2; // break; if more than 2 have values
    });

if(count >= 2) {
    //valid
}

阅读更多信息: https://api.jquery.com/each/

您可以使用 filter() 来检查 inputs 中有多少已被赋值。试试这个:

var validInputs = $("#communications input").filter(function() {
    return !$(this).val().trim() == '';
}).length;

if (validInputs < 2) {
    // form is invalid...
}

如果所有的输入格式相同,验证也相同 尝试遍历 fieldset

中的所有输入
$("#communications input").each(function(i,v){

});

否则您应该分别验证 4 个输入。

您应该为所有这些 input 元素设置 name 属性,然后序列化它们并使用以下方法检查:

if($('#communications :input').serializeArray().length >=2)

'#communications input' 就足够了

使用 .filter() 如下。

var $completedInputs = $("#communications input:text").filter(function() {
    //return the ones witn non-empty values
    return $.trim(this.value) != "";
});

if ($completedInputs.length >= 2) {
    //At least 2 inputs have been filled.   
}

$("#communications input:text")$("#communications :text") => 所有类型为文本的输入

$("#communications input") => 所有输入