Ich möchte eine Option in einer Form wie erstellen
[] I would like to order a [selectbox with pizza] pizza
Dabei ist das Auswahlfeld nur aktiviert, wenn das Kontrollkästchen aktiviert ist, und deaktiviert, wenn es nicht aktiviert ist.
Ich habe mir diesen Code ausgedacht:
<form>
<input type="checkbox" id="pizza" name="pizza" value="yes"> <label for="pizza">
I would like to order a</label>
<select name="pizza_kind">
<option>(choose one)</option>
<option value="margaritha">Margaritha</option>
<option value="hawai">Hawai</option>
</select>
pizza.
</form>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js">
</script>
<script>
var update_pizza = function () {
if ($("#pizza").is(":checked")) {
$("#pizza_kind").removeAttr("disabled");
}
else {
$("#pizza_kind").prop('disabled', 'disabled');
}
};
$(update_pizza);
$("#pizza").change(update_pizza);
</script>
Ich habe versucht , verschiedene Methoden , wie zu setzen deaktiviert Attribut .prop()
, .attr()
und .disabled=
. Es passiert jedoch nichts. Bei der Bewerbung auf eine <input type="checkbox">
statt<select>
funktioniert der Code einwandfrei.
Wie deaktiviere / aktiviere <select>
ich mit jQuery?
Antworten:
Sie möchten folgenden Code verwenden:
Hier arbeitet Beispiel
quelle
$('#pizza_kind').prop('disabled', false);
und$('#pizza_kind').prop('disabled', true);
. In der Dokumentation von jQuery heißt es : Eigenschaften wirken sich im Allgemeinen auf den dynamischen Status eines DOM-Elements aus, ohne das serialisierte HTML-Attribut zu ändern. Beispiele hierfür sind die value-Eigenschaft von Eingabeelementen, die deaktivierte Eigenschaft von Eingaben und Schaltflächen oder die aktivierte Eigenschaft eines Kontrollkästchens. Die .prop () -Methode sollte verwendet werden, um deaktiviert und aktiviert anstelle der .attr () -Methode zu setzen. Die .val () -Methode sollte zum Abrufen und Festlegen von Werten verwendet werden.Um Auswahlen deaktivieren / aktivieren zu können, benötigen Sie zunächst eine ID oder Klasse. Dann könnten Sie so etwas tun:
Deaktivieren:
Aktivieren:
quelle
.removeAttr()
Eigenschaften nicht mehr auf false setzt. jquery.com/upgrade-guide/3.0/… stackoverflow.com/a/13626565/125981Deaktiviert ist ein boolesches Attribut des Auswahlelements, wie von WHATWG angegeben. Dies bedeutet, dass der RECHTE WEG ZUM DEAKTIVIEREN mit jQuery wäre
Dies würde diesen HTML machen
Dies funktioniert sowohl für XHTML als auch für HTML (W3School-Referenz)
Es kann aber auch als Eigentum verwendet werden
bekommen
Was nur für HTML und nicht für XTML funktioniert
HINWEIS: Ein deaktiviertes Element wird nicht mit dem in dieser Frage beantworteten Formular gesendet: Das deaktivierte Formularelement wird nicht gesendet
ANMERKUNG 2: Ein deaktiviertes Element ist möglicherweise .
NOTIZ 3:
TL; DR
quelle
Verwenden Sie einfach:
DEMO
quelle
Verwenden Sie Folgendes:
Oder einfach
id="pizza_kind"
zum<select>
Tag hinzufügen , wie zum Beispiel<select name="pizza_kind" id="pizza_kind">
: jsfiddle linkDer Grund, warum Ihr Code nicht funktioniert hat, ist einfach, dass
$("#pizza_kind")
das<select>
Element nicht ausgewählt wird , weil es nicht vorhanden istid="pizza_kind"
.Edit: Eigentlich ist ein besserer Selektor
$("select[name='pizza_kind']")
: jsfiddle linkquelle
Sie
select
haben keine ID, nur einen Namen. Sie müssen Ihren Selektor ändern:Demo: http://jsbin.com/imokuj/2/edit
quelle
Es tut mir leid, dass ich in einem alten Thread geantwortet habe, aber vielleicht hilft mein Code in Zukunft anderen. Ich war in demselben Szenario, in dem nur wenige ausgewählte Eingabefelder aktiviert werden, wenn das Kontrollkästchen aktiviert ist.
quelle
Gute Frage - Ich denke, der einzige Weg, dies zu erreichen, besteht darin, die Elemente in der Auswahl zu filtern.
Sie können dies über ein jquery-Plugin tun. Überprüfen Sie den folgenden Link. Er beschreibt, wie Sie etwas erreichen, das dem entspricht, was Sie benötigen. Dank
jQuery deaktiviere SELECT-Optionen basierend auf dem ausgewählten Radio (Benötige Unterstützung für alle Browser)
quelle