jQuery, selecting selects

Von in javascript, jquery

Ich woll­te heu­te beim Auf­bau eines län­ge­ren For­mu­lars wegen der Not­wen­dig­keit einer etwas auf­wen­di­ge­ren Über­prü­fung mit Java­script nur die Drop­downs (Selects) her­aus­fil­tern. Wegen tem­po­rä­rer Über­mo­ti­vie­rung soll­te das auch noch varia­bel mit­tels einer Schlei­fe gesche­hen, wobei das Pro­blem auf­trat, wie man denn im Array von Ein­ga­be­fel­dern die Drop­downs erkennt. Ich möch­te hier zei­gen, wie eine Lösung bei der Ver­wen­dung des Frame­works jQue­ry aus­se­hen könnte.

Im beschrie­be­nen Pro­blem wer­den zunächst alle For­mu­lar­fel­der in ein Array bzw. Objekt gela­den. jQue­ry macht es uns hier sehr einfach:

var all_inputs = new Object();
all_inputs = $('form :input');

Dann wird ein­fach über das Objekt ite­riert. Auch hier bie­tet jQue­ry ein wert­vol­les Werkzeug: 

$.each(all_inputs, function () {

});

this” stellt nun in jedem Schlei­fen­durch­gang das jewei­li­ge For­mu­lar­feld zur Ver­fü­gung. Zur wei­te­ren Ver­ar­bei­tung muss jetzt nur noch erkannt wer­den, um wel­chen Feld­typ es sich han­delt. Eine prak­ti­sche Anwen­dung könn­te wie folgt aussehen:

$.each(all_inputs, function () {

     if ( $(this).attr("type") == "select-one" ) {
          alert ( $(this).val() );
     }

});

Die Pro­blem­lö­sung lau­tet also

if ( $(this).attr("type") == "select-one" ) { ...

Der für den Ver­gleich not­wen­di­ge String lässt sich folg­lich ganz ein­fach ermitteln:

alert ( $(this).attr("type") );

Im beschrie­be­nen Bei­spiel wer­den die Selects erst beim Ite­rie­ren gefil­tert. Natür­lich geht das auch schon beim Befül­len des Objekts:

var all_inputs = new Object();
all_inputs = $('form :input[type="select-one"]');
Share on LinkedInShare on Redditshare on TumblrShare on StumbleUponDigg thisShare on FacebookGoogle+Tweet about this on TwitterEmail to someone