【问题标题】:Jquery: If radio button A is checked, do this. If B is check, do thisJquery:如果选中单选按钮 A,请执行此操作。如果 B 是检查,请执行此操作
【发布时间】:2015-02-02 07:49:14
【问题描述】:

我实现了以下 jQuery 代码:

var $morning = $(".radiobox .bba, .radiobox .mba");
var $evening = $(".radiobox .mba");

$('.radiobox input.morneve').change(function(){
    if ($(".radiobox input[value='Morning']").is(':checked')) {
        $($morning).attr("enabled");
    }
    if (!$(".radiobox input[value='Morning']").is(':checked')) {
        $($morning).attr("disabled");
    }
    if ($(".radiobox input[value='Evening']").is(':checked')) {
        $($evening).attr("enabled");
    }
    if (!$(".radiobox input[value='Evening']").is(':checked')) {
        $($evening).attr("disabled");
    }
});

这是 HTML:

<div class="radiobox">
    <input type="radio" name="morneve" class="morneve" value="Morning">
</div>
<div class="radiobox">
    <input type="radio" name="morneve" class="morneve" value="Evening">
</div>
<hr />
<div class="radiobox">
    <input type="radio" name="degreq" class="degreg bba" value="bba">
</div>
<div class="radiobox">
    <input type="radio" name="degreq" class="degreg mba" value="mba">
</div>

我想要做的是,如果输入 Morning 被选中,那么应该启用 $morning。如果选择了输入 Evening,则应禁用 $morning 而应启用 $evening。

一切正常,除了重叠类 .mba

当我检查“早上”时,我看到启用了早上的那些。当我检查 Evening 时,只启用了 .mba。但是,如果我在 Morning 上单击返回,.mba 也会被禁用。

我已经花了好几个小时来解决这个问题,我确定我遗漏了一些东西......任何帮助将不胜感激。

谢谢!

【问题讨论】:

  • 看看.prop(prop, bool)方法
  • 有一个参数,.attr() 检索值,它没有设置它。
  • 没有enabled 属性,只有disabled。根据您的需要,将其设置为 truefalse
  • 也只显示你的html,它的格式不是很清楚。
  • 已包含 HTML

标签: javascript jquery if-statement radio-button


【解决方案1】:

没有名为enabled的属性

// Basically this Morning and Evening are times for when classes are offered. MBA option is offered in both
$(function() {
  var $bba = $(".radiobox .bba");
  var $mba = $(".radiobox .mba");
    
  $('.radiobox input.morneve').click(function(){
    $($bba).prop("disabled",$(".radiobox input[value='Evening']").is(':checked'));
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="radiobox">
    <label><input type="radio" name="morneve" class="morneve" value="Morning">Morning</label>
</div>
<div class="radiobox">
    <label><input type="radio" name="morneve" class="morneve" value="Evening">Evening</label>
</div>
<hr />
<div class="radiobox">
    <label><input type="radio" name="degreq" class="degreg bba" value="bba">BBA</label>
</div>
<div class="radiobox">
    <label><input type="radio" name="degreq" class="degreg mba" value="mba">MBA</label>
</div>

【讨论】:

  • 这也是同样的事情。工作正常,但如果我检查晚上然后回到早上,.mba 被禁用。
  • 所以你需要更好地解释为什么你同时拥有mba
  • 基本上早上和晚上都是上课的时间。两者都提供 MBA 选项......因此两者都提供。
【解决方案2】:

我使用以下代码解决了这个问题:

$('.radiobox input.morneve').change(function(){
    if ($(".radiobox input[value='Morning']").is(':checked')) {
        $(".degreg").attr("disabled", true);
        $($morning).removeAttr("disabled");
        $($evening).prop('checked', false);
    }
    if ($(".radiobox input[value='Evening']").is(':checked')) {
        $(".degreg").attr("disabled", true);
        $($evening).removeAttr("disabled");
        $($morning).prop('checked', false);
    }
});

它所做的是首先禁用所有带有类 .degreg 的输入,然后从 $morning / $evening 中删除 disabled 属性。工作正常,我想我会在这里发布它以帮助某人。

感谢所有贡献的人!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-13
    • 1970-01-01
    • 2021-10-27
    • 2011-06-01
    • 2018-07-29
    • 1970-01-01
    • 2011-05-22
    • 2021-06-19
    相关资源
    最近更新 更多