2 Stimmen

IE löscht Auswahlwert nicht

Ich benutze ein einfaches Stück von Jquery, um den Inhalt des Select in einem Formular zu löschen, aber in IE alle Versionen, ist das Select nicht löschen. es ist ok in FF, nur nicht tun es in IE. kann jemand sehen, wo ich mit diesem falsch gegangen? ich habe den relevanten Teil des Codes gepostet.

UPDATE:

was ich versuche zu erreichen ist, wenn ein Formular gesendet wird, die Eingaben gelöscht werden und die Auswahl/Option kehrt zu es Standardzustand wie wenn die Seite geladen wurde.

Antwort, falls es jemandem weiterhilft: $("select").prop('selectedIndex', 0);

/*Show submitted*/
//$(".done").show(500).slideUp(300).delay(800).fadeIn(400);
$(".done").html("<div id=\"boxSuccess\">Message sent successfully!</div><br />");
/*Clear input values*/
$("input").val("");
/*Clear slelect values*/
$("select").val("");
$(".done").fadeIn(4000).fadeOut(4000);

0 Stimmen

Ist die leere Zeichenkette wirklich der Wert einer <option> Tag unter dem <select> ?

0 Stimmen

@pointy sorry, verstehe ich Ihren Kommentar? danke

0 Stimmen

Einstellung der <select> Wert auf "" bedeutet, dass "die <option> dessen Wert "" ist, die aktuelle Auswahl sein."

6voto

Pointy Punkte 387467

Eine Einfachselektion <select> Element kann nicht wirklich "gelöscht" werden; einige <option> in ihr muss sich zeigen. Um sicherzustellen, dass (zum Beispiel) die erste Option angezeigt wird, können Sie Folgendes tun

$('select').get(0).selectedIndex = 0; // or $('select').prop('selectedIndex', 0);

editar - Ein Blick in den jQuery-Quelltext (1.5.2) verrät mir, dass der "selectedIndex" auf -1 gesetzt wird, wenn der gesuchte Wert nicht als Wert (oder, wenn kein "value"-Attribut vorhanden ist, als Text) einer Option gefunden werden kann. Ein schnelles jsfiddle sollte zeigen, welche Auswirkungen das im IE hat.

erneut bearbeiten - a Schnelltest deutet darauf hin, dass der IE nicht darauf achtet, dass der "selectedIndex" auf -1 gesetzt ist.

mehr Ici ist ein relevanter jQuery-Fehlerbericht. Persönlich glaube ich nicht, dass es wirklich ein Fehler im Falle eines Single-Select-Dropdown ist. Für eine Multi-Auswahl könnte ich ein Argument sehen, obwohl es immer möglich ist, zu tun:

$('select option').prop('selected', false);

um alles in einer Mehrfachauswahl abzuwählen. Funktioniert nicht für ein Element mit einfacher Auswahl, weil das wiederum keinen Sinn macht. Das Element wird つねに bewirken, dass der Wert einer der Optionen mit dem Formular übermittelt wird, so dass es nicht wirklich "gelöscht" werden kann, es sei denn, eine der Optionen hat einen leeren Wert.

noch mehr - Wenn eine Ihrer Optionen das Attribut (oder die Eigenschaft) "defaultSelected" hat, können Sie sie mit zur ausgewählten Option machen:

$('select option').each(function() {
  this.selected = this.defaultSelected;
});

2voto

Nicola Peluchetti Punkte 74314

Weil Sie den Wert auf eine Sammlung von Objekten setzen, denke ich. Ich würde es auf diese Weise tun:

$("select").add("input").each(function(){
     $(this).val("");
});

anstelle von

/*Clear input values*/
$("input").val("");
/*Clear slelect values*/
$("select").val("");

Dies gilt (natürlich) nur, wenn Sie eine Option mit value='' haben und Sie die Auswahl auf diesen Wert zurücksetzen wollen. Wie

 <option value=''>Select a value</option>

1voto

Emyr Punkte 2312

$("select").val(""); sollte lediglich das Element als ausgewählt festgelegt werden, das "" als seinen Wert. Wenn Sie die Elemente tatsächlich entfernen möchten, benötigen Sie etwas wie $("select option").remove();

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X