1

我有一个表单,所有输入字段都为 class item。当我单击提交时,它会使用以下功能检查是否填写了所有值。

$.each($(".items"),function(i,e){
    // loop through all the items
    if(e.value == "" || !$("input[name='"+e.name+"']:radio:checked").length)
        if(error.indexOf(e.title) === -1)
            error += e.title + "<br/>";
    });

此表单由文本区域、单选框和普通文本输入字段组成。它返回所有未填写的单选框,以及所有未填写的文本输入。但它也返回所有文本区域,无论是否填写。

我最初以为是因为我指定它来检查值,但似乎值检查实际上是检查文本区域,所以不可能是这样。

谁能帮助我让它只返回空元素?

4

3 回答 3

3
$.each( $( '.items' ), function() {
    if ( ( this.type === 'checkbox' || this.type === 'radio' ) && !this.checked ) {
        // Go
    }
    else if ( this.value === '' ) {
        // Do your stuff
    }
});

不幸的是,似乎别无选择,只能将案件分开。

于 2012-06-05T09:05:03.963 回答
2
$.each($('.items'),function(i,elem){
    if( ($(elem).attr('type') == 'radio' || $(elem).attr('type') == 'checkbox') && !$(elem).is(':checked') ) {
               // RADIOS AND CHECKBOXES EMPTY
    } else if( $(elem).val().length == 0 ) {
              // INPUTS TYPE TEXT AND TEXTAREA EMPTY
    }
});
于 2012-06-05T09:11:20.013 回答
0

所以我结合使用了 JBRTRND 和 Florian Margaine 的答案,因为两者都不想 100% 正确工作。

我只是把它放在这里,以防有人遇到同样的问题。我从不相信我从他们那里得到的任何帮助,我真的很感激。

这就是我修复它的方法:

$.each($(".items"),function(){
    // loop through all the items
        // and alert the value
        if ( this.type == 'radio' && !$("input[name='"+this.name+"']:radio:checked").length) {
            if(error.indexOf(this.title) === -1)
                error += this.title + "<br/>";
        }
        else if ( this.value === '' ) {
            if(error.indexOf(this.title) === -1)
                error += this.title + "<br/>";
        }
    });
于 2012-06-05T09:52:37.080 回答