javascript each all - Wie kann man jquery code mit find () optimieren?




1 Answers

Sie können den :input Selektor von jQuery :input , der Eingaben, Selects und Textareas auswählt:

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

Das einzige Problem ist, dass Ihre Auswahlvalidierung ein wenig anders ist. Sie können also entweder .is('select') um die Bedingung zu ändern:

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

Sie müssen auch form.children.find() . Sie könnten einfach $("#test :input") oder $(":input", form);

elements with

Ich habe ein Formular mit einer id="test" . Innerhalb des Formulars habe ich einige select , input und textarea .

Ich möchte jeden von ihnen durchlaufen und prüfen, ob sie leer sind und dann etwas mit ihnen machen.

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');
            }
        }
    );
}

Dieser Code tut, was ich brauche, aber Sie können sehen, dass ich mich ein paar Mal wiederhole.

Wie kann ich diesen Code vereinfachen, damit ich ihn vielleicht mit anderen Formen verwenden kann?

irgendwelche Ideen? Danke

Bearbeiten: Danke an alle

Ich habe den Code auf:

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'));



Related