javascript jquery radyo düğmesi tıklaması


90

2 radyo düğmesi ve jquery çalışıyorum.

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

Şimdi, bir düğme ile onClick'i bir işlevi çalıştıracak şekilde ayarlayabilirim. Birine tıkladığımda radyo düğmelerinin bir işlevi çalıştırmasını sağlamanın yolu nedir?


4
Not. Çoğu kişi klavyeyi kullanarak formlarda gezinirken form öğelerinin tıklamalara yanıt vermemesi en iyisidir.
süper parlak yıldız

Yanıtlar:


169

Sen kullanabilirsiniz .changeistediğini için

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

jQuery 1.3 itibariyle

artık "@" işaretine ihtiyacınız yok. Doğru seçim yolu:

$("input[name='lom']")

7
JQuery 1.3'ten itibaren artık '@' işaretine ihtiyacınız olmadığını unutmayın. Doğru seçim yolu:$("input[name='lom']")
lubar

4
Bu çözümü @JohnIdol'ün aşağıdaki çözümüyle radyo değerlerine dayalı koşullu ifadelerle entegre etmek mümkün müdür? eski$("input[name='lom']").change(function(){ if ($(this).val() === '1') {..... // rest conditional statements based on values here } ;
LazerSharks

JQuery 1.3 itibaren, olmamalıdır kullanmak '@' adı özelliğiyle. Bunu yaparsanız, bir jquery.self-0a6570c….js?body=1:1464 Uncaught Error: Syntax error, unrecognized expressionhata alırsınız . Yani bu bir seçim meselesi değil.
scaryguy

53

Radyolarınızı id = radioButtonContainerId olan bir konteynerde bulunduruyorsanız, yine de onClick'i kullanabilir ve ardından hangisinin seçildiğini kontrol edebilir ve buna göre bazı işlevleri çalıştırabilirsiniz:

$('#radioButtonContainerId input:radio').click(function() {
    if ($(this).val() === '1') {
      myFunction();
    } else if ($(this).val() === '2') {
      myOtherFunction();
    } 
  });

Teşekkür ederim. Bu benim için işe yaradı çünkü alanım bir dizinin parçasıydı ve girdi [name = 'xxx'] gösterimini kullanamadım - <input type = "radio" name = "Need [measure_type]" id = "Need_measure_type" value = "aaa">
crafter

Aşağıya sekmeniz ve işaretçiyi ok tuşlarıyla hareket ettirmeniz durumunda bile bu tepki veriyor mu?
Alisso

bu mobil cihazda çalışmaz # seçici mobil cihazda çalışmıyor.
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()

1
Bu yanıt, kodun olaya nasıl bağlanacağını göstermese de, radyo düğmesi grubunun değerinin nasıl alınacağına ilişkin bilgileri içermesi hoşuma gitti.
Manfred

1
$ ("input [@ name = 'lom']"). change (function () {// Burada ilginç bir şey yapın});
Bishoy Hanna


8

Bunu yapmanın birkaç yolu var. Radyo düğmelerinin etrafında bir kap olması ne olursa olsun şiddetle tavsiye edilir, ancak doğrudan düğmelerin üzerine bir sınıf da koyabilirsiniz. Bu HTML ile:

<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>

sınıfa göre seçim yapabilirsiniz:

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

veya kapsayıcı kimliğine göre seçin:

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

Her iki durumda da, olay radyo düğmesini veya etiketini tıkladığınızda tetiklenecektir, ancak ikinci durumda garip bir şekilde ("#shapeList" ile seçilerek), etikete tıklamak herhangi bir nedenle tıklama işlevini iki kez tetikleyecektir. en azından FireFox'ta; sınıfa göre seçmek bunu yapmaz.

SetShape bir işlevdir ve şuna benzer:

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

Bu şekilde, düğmelerinizde etiketler olabilir ve aynı sayfada farklı şeyler yapan birden çok radyo düğmesi listesine sahip olabilirsiniz. Hatta aynı listedeki her bir düğmenin, düğme değerine bağlı olarak SetShape () 'de farklı davranışlar ayarlayarak farklı şeyler yapmasını sağlayabilirsiniz.


3

DOM aramasını kısıtlamak her zaman iyidir. bir üst öğe kullanmak çok daha iyidir, böylece DOM'nin tamamı geçilmez.

ÇOK HIZLI

<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
    });
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.