使用JQuery更改单独的单选按钮状态和运行相关功能

Use JQuery To Change Seperate Radio Button State and Run Associated Function

本文关键字:运行 功能 状态 单选按钮 JQuery 单独 使用      更新时间:2023-09-26

这段代码的目的是,当您将Section Bar单选输入更改为yes时,会发生两件事:

JS Fiddle Link

  1. .bardiv显示
  2. Section Foo单选按钮改为No值 .foodiv被隐藏

另外,当Section Bar变回no时,是否有可能发生相反的情况?.bardiv被隐藏,. Foo section被显示,section Foo按钮被设置回yes值。

基本上,第二个单选按钮的状态会影响第一个按钮,并运行它在改变时的功能,但是第一个按钮在改变时不会影响第二个按钮。

<form>
    <label>Section Foo</label>
    <input class="toggle" data-target=".foo" type="radio" name="enableFoo" value="yes" checked >Yes
    <input class="toggle" data-target=".foo" type="radio" name="enableFoo" value="no">No
</form>
<form>
    <label>Section Bar</label>
    <input class="enable" data-target=".bar" type="radio" name="enableBar" value="yes">Yes
    <input class="enable" data-target=".bar" type="radio" name="enableBar" value="no" checked>No
</form>
<div class="foo">Foo</div>
<div class="bar">Bar</div>
div {
    width: 500px;
    height: 200px;
}
.foo {
    display: block;
    background: red;
}
.bar {
    display: none;
    background: black;
}
$('.toggle').change(function () {
    var target = $(this).data("target"),
        element = $(this),
        name = element.val(),
        is_checked = element.prop('checked')
    if  (name == 'yes') {
        $(target).slideDown(300);
    } else {
        $(target).slideUp(300);
    }
});

$('.enable').change(function () {
    var target = $(this).data("target"),
        element = $(this),
        name = element.val(),
        is_checked = element.prop('checked')
    if  (name == 'yes') {
        $(target).slideDown(300);
        $( ".toggle" ).prop("checked", true) // this changes the .toggle check, but does not run the function, also I'm not sure if it will always set it to the value of no.
    } else {
        $(target).slideUp(300);
        $( ".toggle" ).prop("checked", true)
    }
});

你所需要做的就是当这个单选组是yes时,将另一个单选组的值改为no,然后触发它的change:

$('.toggle').change(function () {
    var foov = $(".toggle:checked").val();
    var target = $(this).data("target");
    if  (foov == 'yes') {
        $(target).slideDown(300);
        $('.enable[value="no"]').prop('checked', true).trigger('change');
    } else {
        $(target).slideUp(300);
    }
});
$('.enable').change(function () {
    var target = $(this).data("target"),
        element = $(this),
        name = element.val(),
        is_checked = element.prop('checked')
    if  (name == 'yes') {
        $(target).slideDown(300);
        $('.toggle[value="no"]').prop('checked', true).trigger('change');
    } else {
        $(target).slideUp(300);
    }
});
<<p> jsfiddle演示/strong>

如果我理解正确的话。那么像这样的代码应该可以达到目的。

jQuery(function($){
    var fooRadio = $(':input[name=enableFoo]'),
        barRadio = $(':input[name=enableBar]');
    function hideShow(el, show) {
        el = $(el);
        if (show) {
            el.slideDown(300);
        } else {
            el.slideUp(300);
        }
    }
    // bindings
    fooRadio.on('change', function(){
        var it = $(this),
            target = it.data('target');
        hideShow(target, it.val()==='yes');
    });
    barRadio.on('change', function(){
        var it = $(this),
            target = it.data('target'),
            active = it.val()==='yes';
        hideShow(target, active);
        if (active) {
            fooRadio.filter('[value=no]').click();
        }
    });
});

这里有一个提琴如果它http://jsfiddle.net/ccn8f84r/1/

下面是你想要的

$('input[type=radio][name=enableFoo]').change(function() {
     var target = $(this).data("target")
   if  ($(".toggle:radio:checked").val() == 'yes') {
        $(target).slideDown(300);
       $( ".enable" ).prop("checked", true).trigger('change')
    } else {
        $(target).slideUp(300);
    } 
    
});
$('input[type=radio][name=enableBar]').change(function() {
     var target = $(this).data("target")
    // alert($(".enable:radio:checked").val())
   if  ($(".enable:radio:checked").val() == 'yes') {
        $(target).slideDown(300);
       $( ".toggle" ).prop("checked", true).trigger('change')
    } else {
        $(target).slideUp(300);
    } 
    
});
div {
    width: 500px;
    height: 200px;
}
.foo {
    display: block;
    background: red;
}
.bar {
    display: none;
    background: black;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form>
    <label>Section Foo</label>
    <input class="toggle" data-target=".foo" type="radio" name="enableFoo" value="yes" checked >Yes
    <input class="toggle" data-target=".foo" type="radio" name="enableFoo" value="no">No
</form>
<form>
    <label>Section Bar</label>
    <input class="enable" data-target=".bar" type="radio" name="enableBar" value="yes">Yes
    <input class="enable" data-target=".bar" type="radio" name="enableBar" value="no" checked>No
</form>
<div class="foo">Foo</div>
<div class="bar">Bar</div>

检查小提琴

使用if…Elseif和我给你的输入类型id =radio

工作:Demo

HTML:添加id的

<form>
    <label>Section Foo</label>
    <input id="1" class="toggle" data-target=".foo" type="radio" name="enableFoo" value="yes" />Yes
    <input id="2" class="toggle" data-target=".foo" type="radio" name="enableFoo" value="no" />No</form>
<form>
    <label>Section Bar</label>
    <input id="3" class="enable" data-target=".bar" type="radio" name="enableBar" value="yes" />Yes
    <input id ="4" class="enable" data-target=".bar" type="radio" name="enableBar" value="no" />No</form>
<div class="foo">Foo</div>
<div class="bar">Bar</div>

CSS: No Change

JS

$("input[type=radio]").click(function () {
    var curClass = this.className;
    var curValue = this.value;    
    if (curClass == "toggle" && curValue == "yes") {
       document.getElementById('4').checked = true;
       $(".bar").slideUp(300);
       $(".foo").slideDown(300);        
    }
    else if (curClass == "toggle" && curValue == "no") {
       document.getElementById('3').checked = true;
       $(".foo").slideUp(300);
       $(".bar").slideDown(300);  
    }
    else if (curClass == "enable" && curValue == "yes") {
       document.getElementById('2').checked = true;
       $(".foo").slideUp(300);
       $(".bar").slideDown(300);  
    }
    else if (curClass == "enable" && curValue == "no") {
       document.getElementById('1').checked = true;
       $(".bar").slideUp(300);
       $(".foo").slideDown(300);  
    }
});