Değişim olayında radyo nasıl kullanılır?


486

Değişiklik olayında iki radyo düğmesi var Değişiklik düğmesi istiyorum Nasıl mümkün? Kodum

<input type="radio" name="bedStatus" id="allot" checked="checked" value="allot">Allot
<input type="radio" name="bedStatus" id="transfer" value="transfer">Transfer

Senaryo

<script>
    $(document).ready(function () {
        $('input:radio[name=bedStatus]:checked').change(function () {
            if ($("input[name='bedStatus']:checked").val() == 'allot') {
                alert("Allot Thai Gayo Bhai");
            }
            if ($("input[name='bedStatus']:checked").val() == 'transfer') {
                alert("Transfer Thai Gayo");
            }
        });
    });
</script>

3
hem koşullar 'tahsis' ile karşılaştırılırsa, aktarmak için değiştirin .. iyi çalışıyor ..
Himanth Kumar

İnanıyorum if($("input[name='bedStatus']:checked").val() == 'allot')yazılabilirif($("input[name='bedStatus']").val() == 'allot')
mplungjan

2
hazır kam ma lagyu ho apdane. teşekkür ederim tay gyu bhai.
Harsh Manvar

Yanıtlar:


930

thisGeçerli inputöğeyi ifade eden kullanabilirsiniz .

$('input[type=radio][name=bedStatus]').change(function() {
    if (this.value == 'allot') {
        alert("Allot Thai Gayo Bhai");
    }
    else if (this.value == 'transfer') {
        alert("Transfer Thai Gayo");
    }
});

http://jsfiddle.net/4gZAT/

allotİfadelerin ve :radioseçicinin kullanımdan kaldırılması durumunda değeri karşılaştırdığınızı unutmayın .

JQuery kullanmıyorsanız, document.querySelectorAllve HTMLElement.addEventListeneryöntemlerini kullanabilirsiniz :

var radios = document.querySelectorAll('input[type=radio][name="bedStatus"]');

function changeHandler(event) {
   if ( this.value === 'allot' ) {
     console.log('value', 'allot');
   } else if ( this.value === 'transfer' ) {
      console.log('value', 'transfer');
   }  
}

Array.prototype.forEach.call(radios, function(radio) {
   radio.addEventListener('change', changeHandler);
});

Giriş radyosunu sıfırlar ve radyo değiştirme olayını tetiklersem, gerçek çıkış nedir?
Ashish Mehta

2
:radioSeçici (jQuery) kaldırılmış değil.
Miquel Al. Vicens

2
Sadece bir not: O dili anlamıyorum.
undefined

7
@Piterden Her şeyden önce, bu cevap 6 yaşında! Bu işlev pasajı, thisdeğeri önemsemediğiniz veya çevredeki bağlam thisdeğerini kullanmak istediğiniz durumlar için ES6'da ok işlevleriyle tanıtılmıştır this. Ve düzenli işlevler kullanmak iddiası "eski kötü uygulama" tamamen anlamsız! Ayrıca, eski tarayıcılar ok işlevi sözdizimini desteklemez Array#includesve biri eski tarayıcıları desteklemek için bir aktarıcı ve şim kullanmalıdır. Neden özellikle karmaşık ok fonksiyonları ile ilgisi olmayan basit bir cevap?
undefined

2
Bunun yerine thiskullanıyorum event.target.
Bobort

137

Yukarıdaki cevabın uyarlanması ...

$('input[type=radio][name=bedStatus]').on('change', function() {
  switch ($(this).val()) {
    case 'allot':
      alert("Allot Thai Gayo Bhai");
      break;
    case 'transfer':
      alert("Transfer Thai Gayo");
      break;
  }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="radio" name="bedStatus" id="allot" checked="checked" value="allot">Allot
<input type="radio" name="bedStatus" id="transfer" value="transfer">Transfer

http://jsfiddle.net/xwYx9


1
'on' ile yukarıdaki cevabı kullanma arasındaki fark nedir?
14'te okenshield

3
@okenshield'ın yukarıdakilere göre .on()gerçekten kazançları var, ancak dinamik seçicileri dikkate alırken, kesinlikle jQuery 1.7+
Ohgodwhy

5
@Ohgodwhy - onetkinlik heyeti için bir bağlam sağladığınızda veya hatta söylediğiniz gibi dinamik seçiciler için bir bağlam sağladığınızda kazançlar elde etti, ancak yazma şekliniz yukarıdaki yanıtla tamamen aynı.
Hugo Silva

1
Anahtarın $ (this) .val () öğesini tekrarlamamanıza izin verdiğini unutmayın, bu sürümü tercih etmelisiniz.
KyleK

36

@ Ohgodwhy'nin cevabı ile bir sınıfı kullanmak daha basit ve daha temiz bir yol olurdu

<input ... class="rButton">
<input ... class="rButton">

Senaryo

$( ".rButton" ).change(function() {
    switch($(this).val()) {
        case 'allot' :
            alert("Allot Thai Gayo Bhai");
            break;
        case 'transfer' :
            alert("Transfer Thai Gayo");
            break;
    }            
});​

18
$(document).ready(function () {
    $('#allot').click(function () {
        if ($(this).is(':checked')) {
            alert("Allot Thai Gayo Bhai");
        }
    });

    $('#transfer').click(function () {
        if ($(this).is(':checked')) {
            alert("Transfer Thai Gayo");
        }
    });
});

JS Fiddle


19
Yerine $(this).is(":checked")kullanımı this.checked. Saf JS ve bu yüzden çok daha hızlı.
Gh61

7
@ Gh61, merak ettim ve bir test yaptım. Pure JS çok daha hızlı .
Michael Crenshaw

9

Onchage işlevini kullan

<input type="radio" name="bedStatus" id="allot" checked="checked" value="allot" onchange="my_function('allot')">Allot
<input type="radio" name="bedStatus" id="transfer" value="transfer" onchange="my_function('transfer')">Transfer

<script>
 function my_function(val){
    alert(val);
 }
</script>

7

Basit ES6 (yalnızca javascript) çözümü.

document.forms.demo.bedStatus.forEach(radio => {
  radio.addEventListener('change', () => {
    alert(`${document.forms.demo.bedStatus.value} Thai Gayo`);
  })
});
<form name="demo">
  <input type="radio" name="bedStatus" value="Allot" checked>Allot
  <input type="radio" name="bedStatus" value="Transfer">Transfer
</form>


6
document.addEventListener('DOMContentLoaded', () => {
  const els = document.querySelectorAll('[name="bedStatus"]');

  const capitalize = (str) =>
    `${str.charAt(0).toUpperCase()}${str.slice(1)}`;

  const handler = (e) => alert(
    `${capitalize(e.target.value)} Thai Gayo${e.target.value === 'allot' ? ' Bhai' : ''}`
  );

  els.forEach((el) => {
    el.addEventListener('change', handler);
  });
});

3
<input type="radio" name="radio"  value="upi">upi
<input type="radio" name="radio"  value="bankAcc">Bank

<script type="text/javascript">
$(document).ready(function() {
 $('input[type=radio][name=radio]').change(function() {
   if (this.value == 'upi') {
    //write your logic here

    }
  else if (this.value == 'bankAcc') {
    //write your logic here
 }
 });
 </script>

3

Radyo düğmeleri dinamik olarak eklenmişse, bunu kullanmak isteyebilirsiniz

$(document).on('change', 'input[type=radio][name=bedStatus]', function (event) {
    switch($(this).val()) {
      case 'allot' :
        alert("Allot Thai Gayo Bhai");
        break;
      case 'transfer' :
        alert("Transfer Thai Gayo");
        break;
    }     
});

0
$(document).ready(function () {
    $('input:radio[name=bedStatus]:checked').change(function () {
        if ($("input:radio[name='bedStatus']:checked").val() == 'allot') {
            alert("Allot Thai Gayo Bhai");
        }
        if ($("input:radio[name='bedStatus']:checked").val() == 'transfer') {
            alert("Transfer Thai Gayo");
        }
    });
});
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.