1

すべての入力フィールドをクラスとして持つフォームがあります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

したがって、どちらも100%正しく動作したくないため、JBTRNDとFlorian Margaineの回答を組み合わせて使用​​しました。

誰かが同じ問題で立ち往生している場合に備えて、これをここに置きます。私は彼らから受けた助けを決して信用しません。本当に感謝しています。

これは私がそれを修正した方法です:

$.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 に答える