如何使用 jquery 启用或禁用基于其他 2 个单选按钮的单选?

Posted

技术标签:

【中文标题】如何使用 jquery 启用或禁用基于其他 2 个单选按钮的单选?【英文标题】:How to enable or disable a radio based on 2 other radio buttons using jquery? 【发布时间】:2021-04-07 03:51:44 【问题描述】:

我有 3 个单选按钮

<div>
<input class="crm-form-radio" value type="radio" id="CIVICRM_QFID_is_recur_radio" name="is_recur_radio">
<label for="CIVICRM_QFID_is_recur_radio">Single</label>
</div>

<div>
<input class="crm-form-radio" value="month" type="radio" id="CIVICRM_QFID_month_is_recur_radio" name="is_recur_radio">
  <label for="CIVICRM_QFID_month_is_recur_radio">Month</label>
</div>

<div>
<input class="payment_processor_gocardless crm-form-radio" value="5" type="radio" id="CIVICRM_QFID_5_payment_processor_id" name="payment_processor_id" >
<label for="CIVICRM_QFID_5_payment_processor_id">Payment</label>

</div>

我想要的结果是,当我选择 Single 时,应该禁用 Payment 单选。

当我选择每月时,应该启用付款单选

这是我尝试过并且能够成功禁用支付单选,但在选择每月时无法启用它。任何帮助,将不胜感激。谢谢

$('input[name=is_recur_radio][id=CIVICRM_QFID_is_recur_radio]').change(function()
if ($("input[name=is_recur_radio]:checked").attr("id")=="CIVICRM_QFID_is_recur_radio") 
    $('input[name=payment_processor_id][value=5]').prop("disabled", true);
    
  );


$('input[name=is_recur_radio][value=month]').change(function()
if ($("input[name=is_recur_radio]:checked").attr("value")=="CIVICRM_QFID_month_is_recur_radio") 
    $('input[name=payment_processor_id][value=5]').prop("disabled", false);
      
);

【问题讨论】:

你有什么相关的 html 可以给我们看吗? 请提供一个最小的、可重现的例子:***.com/help/minimal-reproducible-example 我可以提供实际页面的 URL,如果有帮助的话@DavidsaysreinstateMonica 谢谢 不,不要链接到该页面 - 因为一旦您解决了问题或重新组织您的网站 - 问题就会消失,我们的帮助对未来的访问者毫无用处。而是生成一个“minimal reproducible example”来展示您的问题。 感谢@DavidsaysreinstateMonica 添加了 HTML 【参考方案1】:

由于您的两个无线电名称,即:monthly and single 相同,您可以只使用一个 change 事件处理程序并根据条件更改值。

演示代码

$('input[name=is_recur_radio]').change(function() 
  //check for id and add or remove disabled
  $("input[name=is_recur_radio]:checked").attr("id") == "CIVICRM_QFID_is_recur_radio" ? $('input[name=payment_processor_id][value=5]').prop("disabled", true) : $('input[name=payment_processor_id][value=5]').prop("disabled", false);
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div>
  <input class="crm-form-radio" value type="radio" id="CIVICRM_QFID_is_recur_radio" name="is_recur_radio">
  <label for="CIVICRM_QFID_is_recur_radio">Single</label>
</div>

<div>
  <input class="crm-form-radio" value="month" type="radio" id="CIVICRM_QFID_month_is_recur_radio" name="is_recur_radio">
  <label for="CIVICRM_QFID_month_is_recur_radio">Month</label>
</div>

<div>
  <input class="payment_processor_gocardless crm-form-radio" value="5" type="radio" id="CIVICRM_QFID_5_payment_processor_id" name="payment_processor_id">
  <label for="CIVICRM_QFID_5_payment_processor_id">Payment</label>

</div>

【讨论】:

如果已选择付款,当我从每月切换到单一时,如何清除付款单选?谢谢 你好试试这样$('input[name=payment_processor_id][value=5]').removeAttr('checked')

以上是关于如何使用 jquery 启用或禁用基于其他 2 个单选按钮的单选?的主要内容,如果未能解决你的问题,请参考以下文章

jQuery Filer:如何在我的表单上禁用/启用

如何使用 jQuery 启用或禁用锚点?

如何在jquery中启用和禁用文本框[重复]

asp.net c#.net jquery / javascript 如何使用复选框启用或禁用 requiredfieldvalidator

jQuery 基于复选框选择启用/禁用复选框

如何使用 jquery 在选择框中启用/禁用选项