【问题标题】:Radio Button checked as default remains on true默认选中的单选按钮保持为真
【发布时间】:2021-05-30 18:15:33
【问题描述】:

请帮我弄清楚为什么我的单选按钮默认选中仍然为 True。

这是我的 js 文件:

$(document).ready(function () {
  var is_display = $("#is_display_value").val();

  if (is_display) {
    $("#id_is_display_True").prop("checked", true);
    $("#id_is_display_False").prop("checked", false);
  } else {
    $("#id_is_display_True").prop("checked", false);
    $("#id_is_display_False").prop("checked", true);
  }
});

html:

<div class="status">
    <p>Status</p>
    <input type="hidden" value="False" id="is_display_value"> <!-- Value of {{is_display}} is based on Database, True or False -->
</div>
<div class="status status-body">
    <div class="status-choice">
        <input type="radio" class="triple" name="is_display" value="True" id="id_is_display_True">
        <label for="hide">Show</label>
    </div>
    <div class="status-choice">
        <input type="radio" class="triple" name="is_display" value="False" id="id_is_display_False">
        <label for="hide">Hide</label>
    </div>
</div>

My JSFiddle

【问题讨论】:

    标签: javascript jquery radio-button


    【解决方案1】:

    首先你输入值返回一个字符串(你大写的字符串)

    先获取值字符串为

    var is_display = $("#is_display_value").val().toLowerCase();
    

    在您的条件 if (is_display) 中,它将始终返回 true,因为您检查字符串 "True""False" 是否始终返回 true

    你可以使用一个条件来解决这个问题:

      //get value to lower case 
      var is_display = $("#is_display_value").val().toLowerCase();
      
      $("#id_is_display_true").attr("checked", is_display == "true");
      $("#id_is_display_false").attr("checked", is_display == "false");
    

    参见下面的 sn-p :

    $(document).ready(function () {
      var is_display = $("#is_display_value").val().toLowerCase();
      
      
      $("#id_is_display_true").attr("checked", is_display == "true");
      $("#id_is_display_false").attr("checked", is_display == "false");
      
    });
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <div class="status">
        <p>Status</p>
        <input type="hidden" value="False" id="is_display_value"> 
    </div>
    <div class="status status-body">
        <div class="status-choice">
            <input type="radio" class="triple" name="is_display" id="id_is_display_true" value="true">
            <label for="hide">Show</label>
        </div>
        <div class="status-choice">
            <input type="radio" class="triple" name="is_display"  id="id_is_display_false" value="false">
            <label for="hide">Hide</label>
        </div>
    </div>

    【讨论】:

    • 您可以在提取时将 .val() 转换为布尔值:var is_display = $("#is_display_value").val() == "True"
    • 如果你 .val() 并且你的值为“true”,它仍然是一个字符串,所以 toLowercase 只是有助于比较
    • 谢谢。我做了一些小改动,但它正在工作。
    • @freedomn-m 尝试使用 Boolean(is_display) 总是返回 true
    • 它本质上是在说:var bln = (str == "True" : true ? false)
    猜你喜欢
    • 2014-06-07
    • 2018-12-26
    • 1970-01-01
    • 2017-10-02
    • 2014-03-08
    • 2018-04-21
    • 2013-03-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多