3

が付いたフォームがありid="test"ます。フォームの中には、いくつかselectのフィールドがinputありtextareaます。

それぞれを繰り返し処理して、それらが空であるかどうかを確認してから、それらを使用して何かを実行したいと思います。

var editTest= $('#test');

editGeneric(editTest);

var editGeneric= function(form){
    form.children().find('select').each(
        function(){
            var values = $(this).val();
            if(values === 'select one' || values === 'Select One' || values == 0 || values == 99){
                $(this).css('border', '1px solid red');
            }
        }
    );

    form.children().find('input').each(
        function(){
            var values = $(this).val();
            if(values === ''){
                $(this).css('border', '1px solid red');
            }
        }
    );

    form.children().find('textarea').each(
        function(){
            var values = $(this).val();
            if(values === ''){
                $(this).css('border', '1px solid red');
            }
        }
    );
}

このコードは私が必要とすることを実行しますが、私が数回繰り返すことがわかります。

このコードを単純化して、他のフォームで使用できるようにするにはどうすればよいですか?

何かアイデアはありますか?、ありがとう

編集:すべてに感謝

私はコードを次のように理解しました:

var editGeneric= function(form){

    form.children().find(':input').each( function(){
            var values = $(this).val();

            if ($(this).is('select')){
                if(values === 'select one' || values === 'Select One' || values == 0){
                    $(this).css('border', '1px solid red');
                }
            }
            if ($(this).is('input') || $(this).is('textarea')){
                if(values === ''){
                    $(this).css('border', '1px solid red');
                }
            }
        }
    );

}

editGeneric($('test'));
4

2 に答える 2

2

:input入力、選択、およびテキスト領域を選択するjQueryのセレクターを使用できます。

form.children().find(':input').each( ...

唯一の問題は、検証が少し異なることです。そのため、条件を変更するためにselectチェックすることができます。.is('select')

if (($(this).is('select')
   && (values === 'select one' || values === 'Select One'
   || values == 0 || values == 99) || !$(this).is('select') && values === ''))
   || !$(this).is('select') && values === '') {

また、使用する必要はありませんform.children.find()..あなたはただ使用することができます$("#test :input")または$(":input", form);

于 2012-12-04T21:18:08.980 に答える
1

セレクターを組み合わせるだけです。

form.children().find('select,input,textarea').each(function(){
        if(!$(this).val()){
            $(this).css('border', '1px solid red');
        }
    }
);

次に<select>、無効なオプションが「1つ選択」または99ではなく、空またはゼロ値の属性を持つように変更します。

于 2012-12-04T21:17:05.157 に答える