변경 이벤트에서 라디오를 사용하는 방법은 무엇입니까?


486

변경 이벤트에 두 개의 라디오 버튼이 있습니다. 변경 버튼을 원합니다 어떻게 가능합니까? 내 코드

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

스크립트

<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
조건이 '
allot

나는 믿고 if($("input[name='bedStatus']:checked").val() == 'allot')쓸 수if($("input[name='bedStatus']").val() == 'allot')
mplungjan

2
준비된 캄 마 라규 호 apdane. 고마워 타이 타이 바이.
Harsh Manvar

답변:


930

this현재 input요소 를 나타내는를 사용할 수 있습니다 .

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

allotif 문과 :radioselector 모두에서 더 이상 값을 비교 하지 않습니다.

jQuery를 사용하지 않는 경우 document.querySelectorAlland HTMLElement.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);
});

입력 라디오를 재설정하고 라디오 변경 이벤트를 트리거하면 실제 출력은 무엇입니까?
Ashish Mehta

2
:radio선택기 (jQuery를에) 사용되지되지 않습니다.
Miquel Al. Vicens

2
참고 사항 : 해당 언어를 이해하지 못합니다.
undefined

7
@Piterden 우선,이 답변은 6 살입니다! this값에 신경 쓰지 않거나 this핸들러에서 주변 컨텍스트 값 을 사용하려는 경우를 위해 화살표 함수가 ES6에 도입되었습니다 this. 그리고 정규 기능을 사용한다고 주장하는 것은 "오래된 나쁜 연습"이라고 할 수는 없습니다! 또한 이전 브라우저는 화살표 함수 구문을 지원하지 않으며 이전 브라우저를 지원 Array#includes하기 위해 변환기와 심을 사용해야합니다. 화살표 기능과 특별히 관련이없는 간단한 대답을하는 이유는 무엇입니까?
정의되지 않은

2
대신을 this사용 event.target합니다.
Bobort

137

위의 답변의 적응 ...

$('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'사용과 위의 답변의 차이점은 무엇입니까?
okenshield

3
@okenshield는 .on()실제로 위와 관련하여 이익을 얻었지만 동적 선택기를 고려할 때 반드시 jQuery
1.7 이상

5
@Ohgodwhy- on이벤트 위임 또는 동적 선택기에 대한 컨텍스트를 제공 할 때 얻는 이점 이 있지만 작성 방법은 위의 답변과 정확히 동일합니다.
Hugo Silva

1
switch를 사용하면 $ (this) .val ()을 반복 할 수 없으므로이 버전을 선호해야합니다.
KyleK

36

더 간단하고 깨끗한 방법은 @Ohgodwhy의 답변이있는 클래스를 사용하는 것입니다.

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

스크립트

$( ".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 피들


19
대신에 $(this).is(":checked")사용 this.checked. 순수한 JS이므로 훨씬 빠릅니다.
Gh61

7
@ Gh61, 궁금해서 시험을 보았습니다. 순수 JS는 훨씬 빠릅니다 .
Michael Crenshaw

9

온 차지 기능 사용

<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

간단한 ES6 (자바 스크립트 만 해당) 솔루션.

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

라디오 버튼이 동적으로 추가 된 경우이를 사용할 수 있습니다

$(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");
        }
    });
});
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.