【问题标题】:How to retrieve many radio button value with different name and value如何检索许多具有不同名称和值的单选按钮值
【发布时间】:2023-04-05 15:37:01
【问题描述】:

我有很多像这样名称和值不同的单选按钮

<div>    
<input type="radio" id="radio1" name="1" value="A" />
<input type="radio" id="radio1" name="1" value="B" />
<input type="radio" id="radio1" name="1" value="C" />
<input type="radio" id="radio1" name="1" value="D" />
</div>

<div>
<input type="radio" id="radio2" name="2" value="A" />
<input type="radio" id="radio2" name="2" value="B" />
<input type="radio" id="radio2" name="2" value="C" />
<input type="radio" id="radio2" name="2" value="D" />
</div>

等等,比如 40 单选按钮。我像这样使用 sessionStorage 保存收音机的名称和值

$(document).ready(function(){
    $('input[type="radio"]').on('change', function()
    {
        sessionStorage.setItem($(this).prop('name'), $(this).val());
    });

    for (var i = 0; i < sessionStorage.length; i++) {
        var key   = sessionStorage.key(i);
        var value = sessionStorage.getItem(key);

        $("#radio"+key).val(function(){
            $(this).attr("checked", value);
        });
    }

});

返回检查状态,但所有单选按钮的单选值始终返回相同。

【问题讨论】:

  • ID 必须是唯一的
  • jsfiddle.net/Lvmvky3u - 顺便说一句,它确实有效,当我检查本地存储时,我看到了所需的输出
  • 它确实适用于保存状态,但是当我尝试检索该值时,它只是返回所有无线电的相同值
  • 你能显示错误吗,因为我没有看到
  • 没有错误,只是所有收音机都返回了“A”值

标签: javascript jquery html


【解决方案1】:

检查这个https://jsfiddle.net/Lvmvky3u/1/

Id去掉为classid只指一个唯一的元素

$(document).ready(function() {
  $('input[type="radio"]').on('change', function() {
    sessionStorage.setItem($(this).prop('name'), $(this).val());
  });

  for (var i = 0; i < sessionStorage.length; i++) {
    var key = sessionStorage.key(i);
    var value = sessionStorage.getItem(key);

    $(".radio" + key).filter('[value='+value+']').prop('checked', true);
  }
});

【讨论】:

    【解决方案2】:

    我相信您的问题可能在于您有多个具有相同 id 的元素。为每个单选按钮提供自己的唯一 ID 应该可以解决您的问题。

    *编辑-> 这个问题源于这样一个事实,即元素通常由它们的“id”标识,这会导致问题,而不是对具有特定“id”的元素应用更改/获取信息,而是从最后一个元素编辑/获取信息那个'id'。

    【讨论】:

    • 您可能应该解释一下这将如何解决问题。如果你不能,这应该是一个评论
    • 没关系。我也用不同的 id 命名它,但所有收音机都返回“A”值,现在它返回所有收音机的“D”值
    【解决方案3】:

    我检查了你的代码,它给了我预期的结果。

    但是你的 for 循环有问题。它为第一个单选按钮提供空值。所以你可以使用value="" checked 来给出默认值。

     <div>
        <input type="radio" id="radio1" name="1" value="A" value="" checked />
        <input type="radio" id="radio1" name="1" value="B" />
        <input type="radio" id="radio1" name="1" value="C" />
        <input type="radio" id="radio1" name="1" value="D" />
    </div>
    

    【讨论】:

      猜你喜欢
      • 2012-06-09
      • 1970-01-01
      • 2017-12-03
      • 2017-08-21
      • 1970-01-01
      • 2015-08-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多