kliknij przycisk opcji javascript jquery

90

Mam 2 przyciski radiowe i uruchomione jQuery.

<input type="radio" name="lom" value="1" checked> first
<input type="radio" name="lom" value="2"> second

Teraz za pomocą przycisku mogę ustawić onClick, aby uruchomić funkcję. W jaki sposób można ustawić przyciski opcji, aby uruchamiały funkcję, gdy klikam jeden z nich?

David19801
źródło
4
Uwaga. Najlepiej, aby elementy formularza nie reagowały na kliknięcie, ponieważ wiele osób nawiguje po formularzach za pomocą klawiatury.
superluminium

Odpowiedzi:

169

Możesz używać .changedo tego, co chcesz

$("input[@name='lom']").change(function(){
    // Do something interesting here
});

od jQuery 1.3

nie potrzebujesz już znaku „@”. Prawidłowy sposób wyboru to:

$("input[name='lom']")
Peter Kelly
źródło
7
Pamiętaj, że od wersji jQuery 1.3 nie potrzebujesz już znaku „@”. Prawidłowy sposób wyboru to:$("input[name='lom']")
lubar
4
Czy możliwe jest zintegrowanie tego rozwiązania z poniższym rozwiązaniem @JohnIdol za pomocą instrukcji warunkowych opartych na wartościach radiowych? ex$("input[name='lom']").change(function(){ if ($(this).val() === '1') {..... // rest conditional statements based on values here } ;
LazerSharks,
Od wersji jQuery 1.3 nie należy używać znaku „@” z właściwością name. Jeśli to zrobisz, pojawi się jquery.self-0a6570c….js?body=1:1464 Uncaught Error: Syntax error, unrecognized expressionbłąd. Więc to nie jest kwestia wyboru.
scaryguy
53

Jeśli masz swoje radia w kontenerze z id = radioButtonContainerId, nadal możesz użyć onClick, a następnie sprawdzić, który z nich jest wybrany i odpowiednio uruchomić niektóre funkcje:

$('#radioButtonContainerId input:radio').click(function() {
    if ($(this).val() === '1') {
      myFunction();
    } else if ($(this).val() === '2') {
      myOtherFunction();
    } 
  });
JohnIdol
źródło
Dziękuję Ci. To zadziałało, ponieważ moje pole było częścią tablicy i nie mogłem użyć notacji wejściowej [name = 'xxx'] - <input type = "radio" name = "Need [measure_type]" id = "Need_measure_type" value = "aaa">
crafter
Czy to reaguje, nawet jeśli naciśniesz klawisz Tab i przesuniesz znacznik za pomocą klawiszy strzałek?
Alisso,
to nie zadziała w mobile # selector nie działa w mobile.
zawhtut
19
<input type="radio" name="radio" value="creditcard" />
<input type="radio" name="radio" value="cash"/>
<input type="radio" name="radio" value="cheque"/>
<input type="radio" name="radio" value="instore"/>

$("input[name='radio']:checked").val()
Bishoy Hanna
źródło
1
Chociaż ta odpowiedź nie pokazuje, jak połączyć kod ze zdarzeniem, podoba mi się, że zawierała informacje o tym, jak pobrać wartość grupy przycisków opcji.
Manfred,
1
$ ("input [@ name = 'lom']"). change (function () {// Zrób tutaj coś interesującego});
Bishoy Hanna
11

To powinno być dobre

$(document).ready(function() {
    $('input:radio').change(function() {
       alert('ole');
    });
});
Adam Łukaszczyk
źródło
Przegapiłeś a); z tyłu.
Biswas Khayargoli
8

Można to zrobić na kilka sposobów. Posiadanie kontenera wokół przycisków opcji jest bardzo zalecane, niezależnie od tego, ale możesz również umieścić klasę bezpośrednio na przyciskach. W tym HTML:

<ul id="shapeList" class="radioList">
<li><label>Shape:</label></li>
<li><input id="shapeList_0" class="shapeButton" type="radio" value="Circular" name="shapeList" /><label for="shapeList_0">Circular</label></li>
<li><input id="shapeList_1" class="shapeButton" type="radio" value="Rectangular" name="shapeList" /><label for="shapeList_1">Rectangular</label></li>
</ul>

możesz wybrać według klasy:

$(".shapeButton").click(SetShape);

lub wybierz według identyfikatora kontenera:

$("#shapeList").click(SetShape);

W obu przypadkach zdarzenie zostanie wywołane po kliknięciu przycisku opcji lub jego etykiety, choć w tym drugim przypadku dziwnie (zaznaczenie przez „#shapeList”), kliknięcie etykiety spowoduje dwukrotne z jakiegoś powodu kliknięcie na najmniej w FireFox; wybór według klasy tego nie zrobi.

SetShape to funkcja, która wygląda następująco:

function SetShape() {
    var Shape = $('.shapeButton:checked').val();
//dostuff
}

W ten sposób możesz mieć etykiety na przyciskach i możesz mieć wiele list przycisków radiowych na tej samej stronie, które wykonują różne czynności. Możesz nawet ustawić każdy przycisk na tej samej liście, aby wykonywał różne rzeczy, ustawiając różne zachowanie w SetShape () na podstawie wartości przycisku.

ZeroK
źródło
3

zawsze dobrze jest ograniczyć wyszukiwanie DOM. więc lepiej jest również użyć rodzica, aby cały DOM nie został przemierzony.

TO JEST BARDZO SZYBKIE

<div id="radioBtnDiv">
  <input name="myButton" type="radio" class="radioClass" value="manual" checked="checked"/>
 <input name="myButton" type="radio" class="radioClass" value="auto" checked="checked"/>
</div>



 $("input[name='myButton']",$('#radioBtnDiv')).change(
    function(e)
    {
        // your stuffs go here
    });
Vins
źródło