单选按钮,文本区域和输入检查

时间:2012-06-05 09:00:45

标签: javascript jquery

我有一个表单,其中所有输入字段都是类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/>";
    });

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

我首先想到的是因为我指定它来检查值,但似乎值检查确实检查了文本区域,所以它不可能是那样。

有人可以协助我让它只返回空元素吗?

3 个答案:

答案 0 :(得分:3)

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

不幸的是,似乎没有其他选择,只能将案件分开。

答案 1 :(得分: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
    }
});

答案 2 :(得分: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/>";
        }
    });