jquery .prop('disabled', true) ne fonctionne pas
J'essaie d'alterner disabled = true|false
sur un <input type="text">
, à l'aide d'une case à cocher. Je suis en mesure d'obtenir la valeur de l'entrée, mais je ne peux pas définir l'entrée pour les handicapés.
mon jquery/js code
<script>
$(function () {
$('.date').datepicker();
$('body').on('change', '.housing', function () {
if ($(this).val() == 'dorms') {
$(this).parent().next(".dorms").show();
} else {
$(this).parent().siblings(".dorms").hide();
}
});
$('body').on('change', '.single', function () {
if ($(this).checked) {
$('#echo1').text($(this).prev(".roommate").val()); //this works
$(this).prev(".roommate").val(''); //does not empty the input
$(this).prev(".roommate").disabled = true; //does not set to disabled
$(this).prev(".roommate").prop('disabled', true); //does not set to disabled
$('#echo2').text($(this).prev(".roommate").prop('disabled')); //always says false
} else {
$('#echo1').text($(this).prev(".roommate").val()); //this works
$(this).prev(".roommate").disabled = false; //always stays false
$('#echo2').text($(this).prev(".roommate").prop('disabled')); //always says false
}
});
});
</script>
mon code html
<div class="registration_housing particpant_0" data-sync="0">
<div>
<label class="particpant_0"></label>
</div>
<div>
<label>Off Campus (not included)</label>
<input type="radio" name="housing[0]" value="none" class="housing" />
</div>
<div>
<label>On Campus</label>
<input type="radio" name="housing[0]" value="dorms" class="housing" />
</div>
<div class="dorms" style="display:none;">
<div>
<label>Checkin:</label>
<input type="text" name="check_in[0]" class="date" />
</div>
<div>
<label>Checkout:</label>
<input type="text" name="check_out[0]" class="date" />
</div>
<div>
<label>Roommate:</label>
<input type="text" name="roommate[0]" class="roommate" />
<input type="checkbox" name="roommate_single[0]" value="single" class="single" />check for singe-occupancy</div>
</div>
<div class="line">
<hr size="1" />
</div>
</div>
<div>
<label id="echo1"></label>
</div>
<div>
<label id="echo2"></label>
</div>
vous pouvez voir cela dans http://jsfiddle.net/78dQE/1/
Aucune idée pourquoi je peux obtenir la valeur de (".roommate")
- ie. $(this).prev(".roommate").val()
mais
$(this).prev(".roommate").disabled = true;
OU
$(this).prev(".roommate").prop('disabled', true);
ne sera pas mis en (".roommate")
pour personnes à mobilité réduite?
OriginalL'auteur Sean | 2013-06-22
Vous devez vous connecter pour publier un commentaire.
Votre problème est un mélange de jquery avec DOM les attributs de l'élément
changement
if ($(this).checked) {
àif (this.checked) {
Avec jquery, vous le feriez
Et
au lieu de
Violon
Donc vous avez probablement besoin de ceci:
$(this).prev(".roommate")[0].disabled = false
, qui est ce que jQuery n'sous le capot (pour chaque élément du DOM dans l'objet jQuery, dans ce cas il suffit de le un) lorsque vous appelezprop('disabled', false)
. C'est juste à des fins d'éducation; utiliser leprop()
fonction puisqu'il est plus lisible.Excellent. Je vous remercie.
vous êtes les bienvenus...
"Remarque: Ne pas utiliser [removeProp] pour supprimer les propriétés natives telles que vérifiées, désactivée ou activée. Cela permettra d'éliminer la propriété complètement et, une fois retiré, ne peut pas être ajouté à nouveau à l'élément. Utiliser .prop() pour définir ces propriétés à false à la place."
Oui point valide, je me souviens de répondre avec le même point à une autre question au début lors de mon jquery répondre à jours :). Enfait si je me souviens bien que l'avertissement est donné dans la doc jquery pour removeProp lui-même.
OriginalL'auteur PSL