jQuery : prüfen, ob KEINE option explizit ausgewählt, die in einer select-box
Ist es möglich, zu erkennen, wenn keine option explizit ausgewählt, die in einer select-box?
Ich habe versucht, diese Methoden, aber keiner von Ihnen funktioniert:
<select id="mySelect">
<option value="1">First</option>
<option value="2">Second</option>
<option value="3">Third</option>
<option value="4">Fourth</option>
</select>
Versuch 1:
alert($('#select option:selected').length); //returns 1
Studie 2:
alert($('#select option[selected=selected]').length); //returns 1
Studie 3:
alert($('#select option:selected').attr('selected')); //returns 'selected'
Irgendwelche Ideen, DAMIT die Menschen?
- Du bist immer gehen, um eine option zu aktivieren, weil es standardmäßig immer wählen Sie das erste Element auf der Seite zu laden. Benötigen Sie ein
<option value=""></option>
, und testen, ob der Wert leer ist. - Ich Hänge ein <option>Keine Auswahl</option> zu der select-box zur Laufzeit. Aber es kommt nie durch": selected". Hat jQuery ':selected' nicht berücksichtigen, dynamisch hinzugefügte Optionen?
- Sie vermuten richtig. Voranzustellen ist, indem es NACH dom-laden, so dass die ersten ausgewählten Element wird das Element, das zuerst @ die Zeit der DOM-laden.
- Vielen Dank für die Erklärung!
- schrieb das nur zum Spaß, daher teilen (demo sorta Testfall für deine Frage) : jsfiddle.net/g3qc9/6 mochte alle Antworten, speziell @david ' s , prost!
- Es gibt keinen Grund, einen der Vorschläge auf dieser Seite. Das Problem mit dem jQuery .prepend () - Methode. Verwenden Sie einfach
<option value="" selected=selected> None Selected</option>
in Ihrem voranstellen, und es wird sich ausbreiten richtig. Alle anderen sind verrückt. - Ähnliche Frage hier, diese Lösung funktioniert gut für mich. stackoverflow.com/questions/4018365/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen Sie Dies:
Verwenden Sie dieses JS:
Wird es prüfen, ob Ihr dropdown ausgewählt wurde.
Versuchen Sie, diese Geige: http://jsfiddle.net/aPYyt/
Hoffe, es hilft!
PS: haben Sie, um erste Wert als default-Wert.
-1
wenn nichts markiert ist: developer.mozilla.org/en-US/docs/Mozilla/Tech/XUL/Property/...Dies ist, wie ein normalen select-element arbeitet: die erste option ist ausgewählt, wenn keine andere option hat
selected
- Attribut festgelegt. Die einfachste Lösung ist das hinzufügen eines leer option als die erste option, wie diese:In jQuery können Sie testen, eine der folgenden Bedingungen:
$("#mySelect option:selected").index() == 0
mit einer leichten Veränderung in meinem speziellen Fall$("#mySelect option:selected").index() <= 0
Schön!Einem select-Feld hat immer einen Wert. Wenn Sie nicht manuell ändern Sie den Standardwert, Sie haben noch einen Wert. Für die Prüfung für explizite änderungen, wie Sie sagen, könnten Sie überwachen
change
:Ihre Bedingung wäre dann:
Der mehr gemeinsame Art und Weise, etwas zu erreichen, ähnlich sein würde, um einen Platzhalter einzufügen, mit dem Wert an der Spitze:
... und test für
Wenn Sie brauchen, um herauszufinden, ob die select-wurde geändert von seinem ursprünglichen Wert, d.h. die obigen Tests, aber machen Sie sicher, dass der Benutzer nicht wieder die Standardeinstellung, man kann einfach speichern, wird der ursprüngliche Wert beim laden der Seite:
Und überprüfen
Durch Standard-was auch immer-option auf index 0 als browser ausgewählt. Die Lösung für das problem wäre das einfügen einer dummy-option auf index 0 und vor dem senden des Formulars können Sie bestätigen Sie mit so etwas wie
if($("#selectBox option").index("option:selected")>0)
$("#myForm").submit();