Tengo un formulario jQuery complicado y quiero deshabilitar varios elementos de formulario si se marca una casilla determinada. Estoy usando jQuery 1.3.2 y todos los complementos relevantes. ¿Qué estoy haciendo mal aquí? Gracias, Dakota deljQuery deshabilitar elemento de formulario cuando la casilla de verificación está marcada
Aquí está mi HTML:
<li id="form-item-15" class="form-item">
<div class='element-container'>
<select id="house_year_built" name="house_year_built" class="form-select" >
...Bunch of options...
</select>
<input type="text" title="Original Purchase Price" id="house_purchase_price" name="house_purchase_price" class="form-text money" />
<input type="text" title="Current Home Debt" id="house_current_debt" name="house_current_debt" class="form-text money" />
</div>
<span class="element-toggle">
<input type="checkbox" id="house_toggle" />
<span>Do not own house</span>
</span>
</li>
Aquí es mi jQuery:
$('.element-toggle input').change(function() {
if ($(this).is(':checked')) $(this).parents('div.element-container').children('input,select').attr('disabled', true);
else $(this).parents('div.element-container').children('input,select').removeAttr('disabled'); });
Todavía no funciona, pero parece que debería. ¿Es posible que bind() es más escamoso que onchange, incluso si es menos compatible? Voy a seguir jugando. Hmm. – Dakota
Finalmente eliminé la clase contenedor-elemento ya que no se comportaba para mí y fui con: $ ('. Elemento-toggle input'). Bind ('clic', función() { var inputs = $ (this) .closest ('li.form-item'). find ('input, select'); if ($ (this) .attr ('checked')) inputs.attr ('disabled', true); else inputs.removeAttr ('disabled'); $ (this) .removeAttr ('disabled'); }); Gracias de nuevo, D – Dakota