使用javascript检查单选按钮

时间:2014-01-16 16:05:50

标签: javascript html radio-button

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

我的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()

6 个答案:

答案 0 :(得分:117)

不要将CSS / JQuery语法(#用于标识符)与本机JS混合使用。

原生JS解决方案:

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

JQuery解决方案:

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

答案 1 :(得分:13)

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

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

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

答案 2 :(得分:6)

最简单的方法可能是使用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>

答案 3 :(得分:5)

今天,在2016年,保存使用document.querySelector而不知道ID(特别是如果您有超过2个单选按钮):

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

答案 4 :(得分:3)

通过使用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>

答案 5 :(得分:1)

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

代码:

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

演示: JSFiddle