Je souhaite créer une option sous une forme telle que
[] I would like to order a [selectbox with pizza] pizza
où la boîte de sélection est activée uniquement lorsque la case est cochée et désactivée lorsqu'elle n'est pas cochée.
Je viens avec ce code:
<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>
J'ai essayé différentes méthodes comment définir l' attribut désactivé à l' aide .prop()
, .attr()
et .disabled=
. Cependant, rien ne se passe. Lors de l'application à un <input type="checkbox">
au lieu de <select>
, le code fonctionne parfaitement.
Comment désactiver / activer à l' <select>
aide de jQuery?
Réponses:
Vous souhaitez utiliser un code comme celui-ci:
Voici un exemple de travail
la source
$('#pizza_kind').prop('disabled', false);
et$('#pizza_kind').prop('disabled', true);
. Comme le dit la documentation de jQuery : propriétés affectent généralement l'état dynamique d'un élément DOM sans changer l'attribut HTML sérialisé. Les exemples incluent la propriété value des éléments d'entrée, la propriété disabled des entrées et des boutons ou la propriété cochée d'une case à cocher. La méthode .prop () doit être utilisée pour définir désactivé et vérifié au lieu de la méthode .attr (). La méthode .val () doit être utilisée pour obtenir et définir la valeur.Pour pouvoir désactiver / activer les sélections, vos sélections ont tout d'abord besoin d'un identifiant ou d'une classe. Ensuite, vous pouvez faire quelque chose comme ceci:
Désactiver:
Activer:
la source
.removeAttr()
ne définit plus les propriétés sur false jquery.com/upgrade-guide/3.0/... stackoverflow.com/a/13626565/125981Disabled est un attribut booléen de l' élément select comme indiqué par WHATWG , ce qui signifie que la BONNE FAÇON DE DÉSACTIVER avec jQuery serait
Cela rendrait ce HTML
Cela fonctionne à la fois pour XHTML et HTML (référence W3School)
Pourtant, cela peut aussi être fait en l'utilisant comme propriété
obtenir
Ce qui ne fonctionne que pour HTML et non pour XTML
REMARQUE: Un élément désactivé ne sera pas soumis avec le formulaire comme répondu à cette question: L'élément de formulaire désactivé n'est pas soumis
REMARQUE 2: Un élément désactivé peut être grisé.
NOTE 3:
TL; DR
la source
Utilisez simplement:
DEMO
la source
Utilisez le suivant:
Ou ajoutez simplement
id="pizza_kind"
à<select>
balise, comme<select name="pizza_kind" id="pizza_kind">
: lien jsfiddleLa raison pour laquelle votre code n'a pas fonctionné est simplement parce que
$("#pizza_kind")
ne sélectionnez pas le<select>
élément car il n'a pasid="pizza_kind"
.Edit: en fait, un meilleur sélecteur est
$("select[name='pizza_kind']")
: lien jsfiddlela source
Votre
select
n'a pas d'identifiant, seulement un nom. Vous devrez modifier votre sélecteur:Démo: http://jsbin.com/imokuj/2/edit
la source
désolé d'avoir répondu dans l'ancien fil, mais mon code peut aider les autres à l'avenir. J'étais dans le même scénario que lorsque la case à cocher sera cochée, quelques champs d'entrées sélectionnés seront activés autrement.
la source
Bonne question - je pense que le seul moyen d'y parvenir est de filtrer les éléments de la sélection.
Vous pouvez le faire via un plugin jquery. Consultez le lien suivant, il décrit comment réaliser quelque chose de similaire à ce dont vous avez besoin. Merci
jQuery désactiver les options SELECT en fonction de la radio sélectionnée (besoin de support pour tous les navigateurs)
la source