Làm thế nào để sử dụng radio trên sự kiện thay đổi?


486

Tôi có hai nút radio khi thay đổi sự kiện tôi muốn thay đổi nút Làm thế nào có thể? Mã của tôi

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

Kịch bản

<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
cả hai nếu điều kiện được so sánh với 'phân bổ', thay đổi nó để chuyển .. nó hoạt động tốt ..
Himanth Kumar

Tôi tin rằng if($("input[name='bedStatus']:checked").val() == 'allot')có thể được viếtif($("input[name='bedStatus']").val() == 'allot')
mplungjan

2
sẵn sàng kam ma lagyu ho apdane. thankyou allot Thái gyu bhai.
Harsh Manvar

Câu trả lời:


930

Bạn có thể sử dụng thistrong đó đề cập đến các inputyếu tố hiện tại .

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

Lưu ý rằng bạn đang so sánh giá trị với allotcả hai nếu câu lệnh và :radiobộ chọn không được dùng nữa.

Trong trường hợp bạn không sử dụng jQuery, bạn có thể sử dụng các phương thức document.querySelectorAllHTMLElement.addEventListener:

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

Nếu tôi đặt lại radio đầu vào và kích hoạt sự kiện thay đổi radio, đầu ra thực tế là gì?
Ashish Mehta

2
Bộ :radiochọn không bị phản đối (trong jQuery).
Miquel Al. Vicens

2
Chỉ cần một lưu ý: Tôi không hiểu ngôn ngữ đó.
không xác định

7
@Piterden Trước hết, câu trả lời này là 6 tuổi! Các hàm mũi tên đã được giới thiệu trong ES6 cho các tình huống khi bạn không quan tâm đến thisgiá trị hoặc bạn muốn sử dụng thisgiá trị ngữ cảnh xung quanh trong trình xử lý của mình, đoạn mã này sử dụng this. Và tuyên bố sử dụng các chức năng thông thường là "thực hành xấu cũ" là hoàn toàn vô nghĩa! Ngoài ra, các trình duyệt cũ hơn không hỗ trợ cú pháp chức năng mũi tên Array#includesvà người ta nên sử dụng bộ chuyển mã và shim để hỗ trợ các trình duyệt cũ hơn. Tại sao làm cho một câu trả lời đơn giản không có gì để làm cụ thể với các chức năng mũi tên phức tạp?
không xác định

2
Thay vì this, tôi sử dụng event.target.
Bobort

137

Một bản phóng tác của câu trả lời trên ...

$('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
sự khác biệt giữa việc sử dụng 'trên' và câu trả lời ở trên là gì?
okenshield

3
@okenshield .on()thực sự có lợi ích liên quan đến những điều trên, tuy nhiên, khi tính đến các công cụ chọn động, chắc chắn đó là cách duy nhất để đi trong jQuery 1.7+
Ohgodwhy

5
@Ohgodwhy - oncó lợi khi bạn cung cấp ngữ cảnh cho ủy nhiệm sự kiện hoặc thậm chí cho các bộ chọn động như bạn đã nói, nhưng cách bạn viết, hoàn toàn giống với câu trả lời ở trên.
Hugo Silva

1
Lưu ý rằng chuyển đổi cho phép bạn không lặp lại $ (this) .val (), bạn nên thích phiên bản này.
KyleK

36

Một cách đơn giản và gọn gàng hơn là sử dụng một lớp học với câu trả lời của @ Ohgodwhy

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

Kịch bản

$( ".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");
        }
    });
});

Fiddle


19
Thay vì $(this).is(":checked")sử dụng this.checked. Đó là JS thuần túy và vì vậy nó nhanh hơn rất nhiều.
Gh61

7
@ Gh61, tôi tò mò và chạy thử. Pure JS nhanh hơn rất nhiều .
Michael Crenshaw

9

Sử dụng chức năng 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

Giải pháp ES6 đơn giản (chỉ 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

Nếu các nút radio được thêm động, bạn có thể muốn sử dụng nút này

$(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");
        }
    });
});
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.