È necessario utilizzare .removeAttr('disabled')
anziché .attr('disabled', false)
. Inoltre dovresti cache your jQuery selectors.
Modifica: Pensato a questo dopo il fatto. Si consiglia di "svuotare" il testo che è stato digitato nel campo se lo si disabilita, quindi ho aggiunto uno .val('')
, se si voleva anche nasconderlo, è possibile aggiungere .hide()
e .show()
ai due casi.
ho messo insieme this fiddle visualizzare la versione di lavoro:
var $state = $('#state'), $province = $('#province');
$state.change(function() {
if ($state.val() == 'other') {
$province.removeAttr('disabled');
} else {
$province.attr('disabled', 'disabled').val('');
}
}).trigger('change'); // added trigger to calculate initial state
Il .trigger('change')
sarà "trigger" un evento di modifica, in esecuzione in modo efficace la funzione di una volta, mentre si legano esso. In questo modo, #province
sarà disabilitato/abilitato in base allo stato selezionato al momento dell'esecuzione del codice. Senza di esso, la provincia sarebbe stata disponibile anche se lo stato non fosse "altro" a meno che non si aggiungesse anche disabled='disabled'
al tag <input>
nel proprio html.
Grazie! Potresti spiegare un po 'di più il grilletto. Non capisco davvero. – JeroenEijkhof
@WmasterJ - Aggiunto un po 'di spiegazione – gnarf
Grazie gnarf. – JeroenEijkhof