小编典典

Jquery如果选中单选按钮

all

我现在有这两个单选按钮,以便用户可以决定他们是否需要在价格中包含邮资:

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

我需要使用 Jquery 检查是否选中了“是”单选按钮,如果是,请执行附加功能。有人可以告诉我该怎么做吗?

谢谢你的帮助

编辑:

我已经将我的代码更新为此,但它不起作用。难道我做错了什么?

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

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

});

// ]]>
</script>

阅读 78

收藏
2022-08-05

共1个答案

小编典典

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



var appended = $('<div />').text("You're appendin'!");

appended.id = 'appended';

$('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/1.6.2/jquery.min.js"></script>

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

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

JS 小提琴演示

而且,进一步,一个温和的更新(因为我正在编辑以包括片段以及 JS Fiddle 链接),以便<input />用 s 包装元素<label>-
允许单击文本以更新相关<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 小提琴演示

参考:

2022-08-05