2013-06-19 13 views
15

Mam następujący kod, aby uruchomić zdarzenie click na niektórych przyciskach radiowych! ale nie zostaje wyrzucony! czy ktoś mi w tym pomoże!Zdarzenie kliknięcia jQuery na przycisku radiowym nie jest uruchamiane

KOD:

$("#inline_content input[name='type']").click(function(){ 
    if($('input:radio[name=type]:checked').val() == "walk_in"){ 
     $('#select-table > .roomNumber').attr('enabled',false); 
    } 
}); 

RADIO PRZYCISKI

<form class="type"> 
<input type="radio" name="type" checked="checked" value="guest">In House</input> 
<input type="radio" name="type" value="walk_in">Walk In</input> 
</form>. 

Aktualizacja

Tried onChange() też, ale nie działa.

+1

'OnChange' nie jest rzeczą, to' change'. Dlaczego nie używać 'focus'? –

+0

Program obsługi zdarzeń zostaje zwolniony za mnie: http://jsfiddle.net/6UZKN/, nawet z instrukcją 'if': http://jsfiddle.net/6UZKN/1/. –

+2

użyj 'removeAttr ('enabled')', aby się upewnić. Nie wszystkie przeglądarki obsługują 'enabled =" false "'. – Broxzier

Odpowiedz

30

Strzela. Sprawdzić demo http://jsfiddle.net/yeyene/kbAk3/

$("#inline_content input[name='type']").click(function(){ 
    alert('You clicked radio!'); 
    if($('input:radio[name=type]:checked').val() == "walk_in"){ 
     alert($('input:radio[name=type]:checked').val()); 
     //$('#select-table > .roomNumber').attr('enabled',false); 
    } 
}); 
+0

Poprawić '', twój kod 'html' w jsfiddle.net? – WMomesso

0

Innym sposobem

$("#inline_content input[name='type']").change(function() { 
    if ($(this).val() == "walk_in" && $(this).is(":checked")) { 
     $('#select-table > .roomNumber').attr('enabled', false); 
    } 
}); 

Demo - http://jsfiddle.net/cB6xV/

+0

Możesz uprościć treść obsługi zdarzeń do '$ ('# select-table> .roomNumber') .project (" enabled ", this.value! == 'walk_in');'. I lepiej użyj '.prop' dla atrybutów boolean. –

+0

Dlaczego nie pomyślałem o tym –

0

Wygląda jakbyś #inline_content tam nie ma! Usuń selektor jQuery lub sprawdź elementy nadrzędne, może masz literówkę lub zapomniałeś dodać id.

(wykonane ci jsfiddle, pracuje po dodaniu rodzica <div id="inline_content">: http://jsfiddle.net/J5HdN/)

0

umieścić ur kod js pod html formularza lub użyć $ (document) .ready (function() {}) i spróbować.

$('#inline_content input[type="radio"]').click(function(){ 
       if($(this).val() == "walk_in"){ 
        alert('ok'); 
       } 
}); 
11

Istnieje kilka rzeczy złych w tym kodzie:

  1. Używasz <input> niewłaściwy sposób. Powinieneś użyć <label>, jeśli chcesz, aby tekst był klikalny.
  2. Ustawia atrybut enabled, który nie istnieje. Zamiast tego użyj disabled.
  3. 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.
  4. 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/

0

Osobiście, dla mnie najlepszym rozwiązaniem dla podobny problem to:

HTML

<input type="radio" name="selectAll" value="true" /> 
<input type="radio" name="selectAll" value="false" /> 

JQuery

var $selectAll = $("input:radio[name=selectAll]"); 
    $selectAll.on("change", function() { 
     console.log("selectAll: " + $(this).val()); 
     // or 
     alert("selectAll: " + $(this).val()); 
    }); 

* Zdarzenie "kliknięcie" może pracować w miejscu "zmiany", jak również.

Mam nadzieję, że to pomoże!

Powiązane problemy