Bagaimana cara menggunakan radio saat perubahan acara?


486

Saya memiliki dua tombol radio pada acara perubahan. Saya ingin mengubah tombol. Bagaimana mungkin? Kode Saya

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

Naskah

<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
keduanya jika kondisinya dibandingkan dengan 'allot', ubah untuk mentransfer .. berfungsi dengan baik ..
Himanth Kumar

Saya percaya if($("input[name='bedStatus']:checked").val() == 'allot')dapat ditulisif($("input[name='bedStatus']").val() == 'allot')
mplungjan

2
siap kam ma lagyu ho apdane. terima kasih membagikan thai gyu bhai.
Harsh Manvar

Jawaban:


930

Anda dapat menggunakan thisyang merujuk ke inputelemen saat ini .

$('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/

Perhatikan bahwa Anda membandingkan nilai terhadap allotkedua jika pernyataan dan :radiopemilih sudah usang.

Jika Anda tidak menggunakan jQuery, Anda dapat menggunakan document.querySelectorAlldan HTMLElement.addEventListenermetode:

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);
});

Jika saya mengatur ulang radio input dan memicu acara perubahan radio, apa output yang sebenarnya.?
Ashish Mehta

2
The :radiopemilih tidak ditinggalkan (di jQuery).
Miquel Al. Vicens

2
Hanya sebuah catatan: Saya tidak mengerti bahasa itu.
undefined

7
@ Piterden Pertama-tama, jawaban ini adalah 6 tahun! Fungsi panah telah diperkenalkan di ES6 untuk situasi ketika Anda tidak peduli dengan thisnilai atau Anda ingin menggunakan nilai konteks sekitarnya thisdi handler Anda, potongan ini digunakan this. Dan mengklaim menggunakan fungsi biasa adalah "praktik buruk lama" sama sekali tidak ada artinya! Juga, browser lama tidak mendukung sintaks fungsi panah dan Array#includesdan seseorang harus menggunakan transpiler dan shim untuk mendukung browser lama. Mengapa membuat jawaban sederhana yang tidak ada hubungannya dengan fungsi panah rumit?
undefined

2
Alih-alih this, saya gunakan event.target.
Bobort

137

Adaptasi dari jawaban di atas ...

$('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
apa perbedaan antara menggunakan 'on' dan jawaban di atas?
okenshield

3
@okenshield .on()benar-benar mendapatkan keuntungan dalam kaitannya dengan hal di atas, namun, ketika mempertimbangkan pemilih dinamis, itu pasti satu-satunya cara untuk masuk di jQuery 1.7+
Ohgodwhy

5
@Ohgodwhy - onmemiliki keuntungan ketika Anda memberikan konteks untuk delegasi acara, atau bahkan untuk penyeleksi dinamis seperti yang Anda katakan, tetapi cara Anda menulisnya, persis sama dengan jawaban di atas.
Hugo Silva

1
Perhatikan bahwa sakelar memungkinkan Anda untuk tidak mengulangi $ (ini) .val (), Anda harus memilih versi ini.
KyleK

36

Cara yang lebih sederhana dan bersih adalah menggunakan kelas dengan jawaban @ Ohgodwhy

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

Naskah

$( ".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
Alih-alih $(this).is(":checked")digunakan this.checked. Ini JS murni dan jadi jauh lebih cepat.
Gh61

7
@ Gh61, saya penasaran dan menjalankan tes. JS murni jauh lebih cepat .
Michael Crenshaw

9

Gunakan fungsi onchage

<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

Solusi ES6 sederhana (hanya javascript) .

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

Jika tombol radio ditambahkan secara dinamis, Anda mungkin ingin menggunakan ini

$(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");
        }
    });
});
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.