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

时间:2015-10-09 10:52:04

标签: javascript c# jquery unobtrusive-validation

这是我在这里提出的第一个问题。 我有一个有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>

提前谢谢你, 科斯塔斯。

6 个答案:

答案 0 :(得分:1)

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

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

'#communications input'就足够了

答案 1 :(得分:1)

使用.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") =&gt;所有类型为文本的输入

$("#communications input") =&gt;所有输入

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

尝试这样的事情。

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/

答案 4 :(得分:0)

您可以使用filter()来检查inputs中有多少人获得了值。试试这个:

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

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

答案 5 :(得分:0)

如果所有输入具有相同的格式且验证相同 尝试迭代fieldset

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

});

否则你应该单独验证4个输入。