Istnieje kilka rzeczy złych w tym kodzie:
- Używasz
<input>
niewłaściwy sposób. Powinieneś użyć <label>
, jeśli chcesz, aby tekst był klikalny.
- Ustawia atrybut
enabled
, który nie istnieje. Zamiast tego użyj disabled
.
- Jeśli byłby to atrybut, jego wartość nie powinna być równa
false
, należy użyć disabled="disabled"
lub po prostu disabled
bez wartości.
- W przypadku sprawdzania, czy ktoś kliknął zdarzenie formularza, które ZMIEŚCI jego wartość (jak pola wyboru i przyciski opcji), należy zamiast tego użyć
.change()
.
Nie jestem pewien, co powinien zrobić twój kod. Domyślam się, że chcesz wyłączyć pole wejściowe z klasą roomNumber
, gdy ktoś wybierze "Walk in" (i ewentualnie ponownie włączyć po odznaczeniu).Jeśli tak, spróbuj tego kodu:
HTML:
<form class="type">
<p>
<input type="radio" name="type" checked="checked" id="guest" value="guest" />
<label for="guest">In House</label>
</p>
<p>
<input type="radio" name="type" id="walk_in" value="walk_in" />
<label for="walk_in">Walk in</label>
</p>
<p>
<input type="text" name="roomnumber" class="roomNumber" value="12345" />
</p>
</form>
Javascript:
$("form input:radio").change(function() {
if ($(this).val() == "walk_in") {
// Disable your roomnumber element here
$('.roomNumber').attr('disabled', 'disabled');
} else {
// Re-enable here I guess
$('.roomNumber').removeAttr('disabled');
}
});
I stworzył skrzypce tutaj: http://jsfiddle.net/k28xd/1/
'OnChange' nie jest rzeczą, to' change'. Dlaczego nie używać 'focus'? –
Program obsługi zdarzeń zostaje zwolniony za mnie: http://jsfiddle.net/6UZKN/, nawet z instrukcją 'if': http://jsfiddle.net/6UZKN/1/. –
użyj 'removeAttr ('enabled')', aby się upewnić. Nie wszystkie przeglądarki obsługują 'enabled =" false "'. – Broxzier