Jquery统计所有空字段

4

在jquery中是否有一种方法可以计算表单中所有空输入和文本区域的数量,针对以下类型:

复选框、日期、日期时间、电子邮件、月份、数字、单选按钮、电话、文本

因为每个表单都有一个名为maxInput的js变量。 如果maxInput是6(表单有6个输入),那么如果您计算输入并且它是6,我就知道所有内容都已填写。 是否有人知道如何完成这个任务。

2个回答

5
假设所有的输入框都有一个名为 yourClass 的类,那么这个方法可能会对你有所帮助:
$('.yourClass').filter(function(){
return !$(this).val();
}).length;

这也包括单选框和选择框吗? - Bham
选择,是——复选框和单选按钮不太可能。同时请记住,如果字段中的值为数字0,则会返回错误结果。 - Ryan Neuffer
$( 'input[type=radio]' ) 将获取所有单选按钮。 - Salah Akbari
查找未选择的单选按钮组比较困难。 - Ryan Neuffer

2

如果给定一个类为“test-form”的表单,这应该适用于您指定的可变/动态数量的输入。只需确保在选择器的默认选项上设置value =“”。检查单选按钮组是否未选中有点棘手:

var emptyTextCheckboxAndSelect = $('.test-form input, .test-form select').filter(function(){

    if($(this).attr('type') === "radio"){
        return false;//we'll check for empty radio groups elsewhere        
    }

    if($(this).attr('type') === "checkbox"){
        return !$(this).prop("checked");
    }

    return !$(this).val();//this only works for select if default option explicitly sets value=""

}).length;


var radioNameHash = {},
    uncheckedRadioButtonGroups = 0;

$('.test-form input[type="radio"]').each(function(i, radioButton){

    if(radioNameHash[$(this).attr('name')] === undefined){
        uncheckedRadioButtonGroups++;
        radioNameHash[$(this).attr('name')] = true;
    }

    if($(this).prop("checked") === true){
        uncheckedRadioButtonGroups--;
    }
});

var totalUnfilledFields = emptyTextCheckboxAndSelect + uncheckedRadioButtonGroups;

alert(totalUnfilledFields);

这是 JSFiddle 的链接:https://jsfiddle.net/qLedcr82/1/

另外,通常最佳实践是为单选按钮组设置默认值,否则解决方案的一部分将无法使用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接