Jquery 라디오 버튼이 선택된 경우


150

중복 가능성 :
특정 라디오 버튼 확인이 확인되었습니다.

나는이 2 개의 라디오 버튼이있어 가격에 우송료가 필요한지 여부를 결정할 수 있습니다.

<input type="radio" id="postageyes" name="postage" value="Yes" /> Yes
<input type="radio" id="postageno" name="postage" value="No" /> No

Jquery를 사용하여 'yes'라디오 버튼이 선택되어 있는지 확인하고 그렇다면 '추가'기능을 수행해야합니다. 누군가 내가 어떻게 할 수 있는지 말해 줄 수 있습니까?

도움을 주셔서 감사합니다

편집하다:

내 코드를 이것으로 업데이트했지만 작동하지 않습니다. 내가 뭔가 잘못하고 있습니까?

<script type='text/javascript'>
// <![CDATA[
jQuery(document).ready(function(){

$('input:radio[name="postage"]').change(function(){
    if($(this).val() == 'Yes'){
       alert("test");
    }
});

});

// ]]>
</script>

1
@ 다니엘 H : 업데이트시 : 그것은 잘 작동합니다 !
Shef

이상합니다. 웹 사이트에서 작동하지 않습니다. 적어도 코드가 옳다는 것을 알고 있습니다. 모든 답변에 감사드립니다.
Daniel H

답변:


285
$('input:radio[name="postage"]').change(
    function(){
        if ($(this).is(':checked') && $(this).val() == 'Yes') {
            // append goes here
        }
    });

또는 위의-다시-조금 불필요한 jQuery를 사용하십시오.

$('input:radio[name="postage"]').change(
    function(){
        if (this.checked && this.value == 'Yes') {
            // note that, as per comments, the 'changed'
            // <input> will *always* be checked, as the change
            // event only fires on checking an <input>, not
            // on un-checking it.
            // append goes here
        }
    });

수정 된 (개선 된) jQuery :

// defines a div element with the text "You're appendin'!"
// assigns that div to the variable 'appended'
var appended = $('<div />').text("You're appendin'!");

// assigns the 'id' of "appended" to the 'appended' element
appended.id = 'appended';

// 1. selects '<input type="radio" />' elements with the 'name' attribute of 'postage'
// 2. assigns the onChange/onchange event handler
$('input:radio[name="postage"]').change(
    function(){

        // checks that the clicked radio button is the one of value 'Yes'
        // the value of the element is the one that's checked (as noted by @shef in comments)
        if ($(this).val() == 'Yes') {

            // appends the 'appended' element to the 'body' tag
            $(appended).appendTo('body');
        }
        else {

            // if it's the 'No' button removes the 'appended' element.
            $(appended).remove();
        }
    });

JS 피들 데모 .

또한 <input />요소를 <label>s 로 감싸기 위해 간단한 업데이트 (Snippets 및 JS Fiddle 링크를 포함하도록 편집 했으므로) -텍스트를 클릭하여 관련 항목을 업데이트 할 수 있도록 <input />하고 추가 할 내용 :

var appended = $('<div />', {
  'id': 'appended',
  'text': 'Appended content'
});
$('input:radio[name="postage"]').change(function() {
  if ($(this).val() == 'Yes') {
    $(appended).appendTo('body');
  } else {
    $(appended).remove();
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<label>
  <input type="radio" id="postageyes" name="postage" value="Yes" />Yes</label>
<label>
  <input type="radio" id="postageno" name="postage" value="No" />No</label>

JS 피들 데모 .

또한 사용자가 어떤 요소를 확인했는지에 따라 콘텐츠를 표시 해야하는 경우 명시 적 표시 / 숨기기를 사용하여 가시성을 토글하는 약간의 업데이트가 있습니다.

// caching a reference to the dependant/conditional content:
var conditionalContent = $('#conditional'),
    // caching a reference to the group of inputs, since we're using that
    // same group twice:
    group = $('input[type=radio][name=postage]');

// binding the change event-handler:
group.change(function() {
  // toggling the visibility of the conditionalContent, which will
  // be shown if the assessment returns true and hidden otherwise:
  conditionalContent.toggle(group.filter(':checked').val() === 'Yes');
  // triggering the change event on the group, to appropriately show/hide
  // the conditionalContent on page-load/DOM-ready:
}).change();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<label>
  <input type="radio" id="postageyes" name="postage" value="Yes" />Yes</label>
<label>
  <input type="radio" id="postageno" name="postage" value="No" />No</label>
<div id="conditional">
  <p>This should only show when the 'Yes' radio &lt;input&gt; element is checked.</p>
</div>

마지막으로 CSS 만 사용하십시오.

/* setting the default of the conditionally-displayed content
to hidden: */
#conditional {
  display: none;
}

/* if the #postageyes element is checked then the general sibling of
that element, with the id of 'conditional', will be shown: */
#postageyes:checked ~ #conditional {
  display: block;
}
<!-- note that the <input> elements are now not wrapped in the <label> elements,
in order that the #conditional element is a (subsequent) sibling of the radio
<input> elements: -->
<input type="radio" id="postageyes" name="postage" value="Yes" />
<label for="postageyes">Yes</label>
<input type="radio" id="postageno" name="postage" value="No" />
<label for="postageno">No</label>
<div id="conditional">
  <p>This should only show when the 'Yes' radio &lt;input&gt; element is checked.</p>
</div>

JS 피들 데모 .

참고 문헌 :


3
확인 여부를 확인할 필요가 없습니다. 그렇지 않으면 값이 없습니다. 자원 낭비!
Shef

22

이 시도

if($("input:radio[name=postage]").is(":checked")){
  //Code to append goes here
}

12

이 같은:

if($('#postageyes').is(':checked')) {
// do stuff
}

3
jQuery 객체는 항상 진실합니다. $(...).length대신 사용할 수 있습니다 .
pimvdb

당신은 의미 #postageyes:checked$('#postageyes').is(':checked')?
Shef

@pimvdb jQuery 문서is() 에 따르면 부울을 반환합니다. 그래서 전화 .length()가 끊어졌습니다. 문서에서 : "다른 필터링 방법과 달리 .is ()는 새 jQuery 객체를 생성하지 않습니다. 대신 jQuery 객체의 내용을 수정하지 않고 테스트 할 수 있습니다." - api.jquery.com/is
아삽

7
$('input:radio[name="postage"]').change(function(){
    if($(this).val() === 'Yes'){
       // append stuff
    }
});

라디오 버튼에서 변경 이벤트를 수신합니다. 사용자가을 클릭 Yes하면 이벤트가 시작되고 원하는 항목을 DOM에 추가 할 수 있습니다.


6
if($('#test2').is(':checked')) {
    $(this).append('stuff');
} 

4
$("input").bind('click', function(e){
   if ($(this).val() == 'Yes') {
        $("body").append('whatever');
   }
});

이것에 대해 너무 확실하지 않지만 $("#postageyes:checked"항상 true를 반환 하지는 않습니까? .length작동 하기 위해 를 사용해야하지 않습니까?
Phil

"또는"와 그 이후의 모든 것을 제거
창세기


0
jQuery('input[name="inputName"]:checked').val()

이 코드 스 니펫은 문제를 해결할 수 있지만 설명을 포함하면 게시물의 품질을 향상시키는 데 실제로 도움이됩니다. 앞으로 독자들에게 질문에 대한 답변을 제공하므로 해당 사람들이 코드 제안의 이유를 모를 수도 있습니다.
Patrick Hund

알았다. 다음 답변이 하나 있습니다.
Benjamin

0

변경된 이벤트를 듣습니다. 나는 다른 사람들의 대답을 시도했지만 그 결과는 나에게 도움이되지 못했습니다.

$('input:radio[name="postage"]').change(function(){
    if($(this).is(":checked")){
        alert("lksdahflk");
    }
});
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.