【问题标题】:Check a radio button with javascript使用 javascript 检查单选按钮
【发布时间】:2014-02-05 15:49:54
【问题描述】:

由于某种原因,我似乎无法弄清楚这一点。

我的 html 中有一些单选按钮可以切换类别:

<input type="radio" name="main-categories" id="_1234" value="1234" /> // All
<input type="radio" name="main-categories" id="_2345" value="2345" /> // Certain category
<input type="radio" name="main-categories" id="_3456" value="3456" /> // Certain category
<input type="radio" name="main-categories" id="_4567" value="4567" /> // Certain category

用户可以选择任何他/她想要的,但是当某个事件触发时,我想将1234设置为选中单选按钮,因为这是默认选中单选按钮。

我已经尝试过这个版本(有和没有 jQuery):

document.getElementById('#_1234').checked = true;

但它似乎没有更新。我需要它明显更新,以便用户可以看到它。 有人可以帮忙吗?

编辑:我只是累了,忽略了#,感谢您指出,还有$.prop()

【问题讨论】:

  • 检查这个 StackOverflow 问题:[如何使用 jQuery 检查单选按钮][1] [1]:stackoverflow.com/questions/5665915/…
  • 更改为document.getElementById('_1234').checked = true;
  • @stackErr 没有#
  • 对不起,只是一个错误的复制粘贴。现在更新了。 @FelipeKM 那请帮帮我,我还没有找到有帮助的。
  • @kjelelokk 检查我的评论或 Pointys 答案

标签: javascript html radio-button


【解决方案1】:

不要将 CSS/JQuery 语法(# 表示标识符)与原生 JS 混合。

原生 JS 解决方案:

document.getElementById("_1234").checked = true;

jQuery 解决方案:

$("#_1234").prop("checked", true);

【讨论】:

  • 技术上它是 CSS 选择器语法。 jQuery 只是借用和扩展它
  • jQuery 是从querySelector 得到的。
  • .attr("checked", "checked")好多了
  • @Andy - Sizzle 从 2006 年初开始在 jQuery 中使用。 (en.wikipedia.org/wiki/JQuery#History)。 querySelector 直到 2009 年才在浏览器中发布,并且直到之后的一段时间才被开发人员广泛使用。我从来没有这么多地使用过 jQuery,但它对 JS 的发展产生了重大影响。
  • 这会设置复选框,但不一定会触发相关事件。当用户点击单选按钮时会触发什么事件?
【解决方案2】:

如果要设置“1234”按钮,需要使用它的“id”:

document.getElementById("_1234").checked = true;

当您使用浏览器 API(“getElementById”)时,您不使用选择器语法;您只需传递您正在寻找的实际“id”值。您可以在 jQuery 或 .querySelector().querySelectorAll() 中使用选择器语法。

【讨论】:

  • 每个人都通过 ID 获取元素 我有多个同名的单选按钮。我认为这就是大多数人需要按名称选择一组收音机然后根据值检查其中一个。
  • @NadeemGorsi “id”属性不能被多个元素共享。所有“id”值在给定页面上必须是唯一的。
【解决方案3】:

今天,在 2016 年,在不知道 ID 的情况下使用 document.querySelector 是省事(特别是如果您有超过 2 个单选按钮):

document.querySelector("input[name=main-categories]:checked").value

【讨论】:

  • 好的,但是我怎样才能获得相反的效果或根据价值检查收音机..这就是问题所在。
  • @NadeemGorsi 我提供了使用 QuerySelector 选择或“检查”单选按钮的答案
【解决方案4】:

最简单的方法可能是使用 jQuery,如下所示:

$(document).ready(function(){
  $("#_1234").attr("checked","checked");
})

这添加了一个新属性“checked”(在 HTML 中不需要值)。 请记住包含 jQuery 库:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>

【讨论】:

  • 或者只是$("#_1234").prop("checked", true)
【解决方案5】:

通过使用document.getElementById() 函数,您不必在元素ID 之前传递#

代码:

document.getElementById('_1234').checked = true;

演示: JSFiddle

【讨论】:

    【解决方案6】:

    我能够通过在 Firefox 72 中使用此 Javascript 代码在 Web 扩展选项页面中选择(检查)单选输入按钮以加载值:

    var reloadItem = browser.storage.sync.get('reload_mode');
    reloadItem.then((response) => {
        if (response["reload_mode"] == "Periodic") {
            document.querySelector('input[name=reload_mode][value="Periodic"]').click();
        } else if (response["reload_mode"] == "Page Bottom") {
            document.querySelector('input[name=reload_mode][value="Page Bottom"]').click();
        } else {
            document.querySelector('input[name=reload_mode][value="Both"]').click();
        }
    });
    

    保存值的相关代码是:

    reload_mode: document.querySelector('input[name=reload_mode]:checked').value
    

    给定 HTML 如下:

        <input type="radio" id="periodic" name="reload_mode" value="Periodic">
        <label for="periodic">Periodic</label><br>
        <input type="radio" id="bottom" name="reload_mode" value="Page Bottom">
        <label for="bottom">Page Bottom</label><br>
        <input type="radio" id="both" name="reload_mode" value="Both">
        <label for="both">Both</label></br></br>
    

    【讨论】:

      【解决方案7】:

      似乎 HTML 单选按钮的 item.checked 属性无法在 Internet Explorer 或某些旧版浏览器中使用 JavaScript 进行更改。

      我也尝试设置“checked”属性,使用: item.setAttribute("选中", "");我知道该属性可以默认设置, 但我只需要在运行时更改选中的属性。

      作为一种解决方法,我找到了另一种可行的方法。我调用了 item.click();单选按钮的方法。并且控件已被选中。但该控件必须已经添加到 HTML 文档中,才能接收点击事件。

      【讨论】:

      • 很好的细节阿德里安,但我认为原始海报有一个更简单的问题,“#”在错误的地方:)
      猜你喜欢
      • 2012-12-07
      • 1970-01-01
      • 1970-01-01
      • 2021-09-03
      • 1970-01-01
      • 2019-05-29
      • 2015-05-28
      • 1970-01-01
      • 2013-09-29
      相关资源
      最近更新 更多