获取选中复选框的值?

IT技术 javascript checkbox
2021-01-19 11:56:14

所以我的代码看起来像这样:

<input class="messageCheckbox" type="checkbox" value="3" name="mailId[]">
<input class="messageCheckbox" type="checkbox" value="1" name="mailId[]">

我只需要 Javascript 来获取当前选中的任何复选框的值。

编辑:要添加,只会有一个复选框。

6个回答

以上都不适合我,只是简单地使用这个:

document.querySelector('.messageCheckbox').checked;
这不能与 OP 提供的示例代码一起使用......我很好奇为什么它在没有回答问题的情况下获得了如此多的赞成票,尽管快速修复可能会使其正确。
2021-03-27 11:56:14
你从哪里得到的id你能解释一下吗?提出问题的人class实际上在输入中使用如果你能提供完整的代码,这样我就可以理解你从哪里得到的id
2021-04-01 11:56:14
您能否编辑您提出的答案以扩展它的作用以及它如何解决 OP?
2021-04-04 11:56:14
我同意。你证实了我的想法。我喜欢把 var chk1= document.getElementById('messageCheckbox'); 这样我就可以引用“chk1”变量的属性:选中、启用、样式等。
2021-04-06 11:56:14
@PradeepKumarPrabaharan 可能像我这样的人(不将 id 用于多个项目)想知道为什么 .value 给他们未定义。
2021-04-09 11:56:14

对于现代浏览器

var checkedValue = document.querySelector('.messageCheckbox:checked').value;

通过使用jQuery

var checkedValue = $('.messageCheckbox:checked').val();

纯 javascript 没有jQuery

var checkedValue = null; 
var inputElements = document.getElementsByClassName('messageCheckbox');
for(var i=0; inputElements[i]; ++i){
      if(inputElements[i].checked){
           checkedValue = inputElements[i].value;
           break;
      }
}
对于 jQuery.is(":checked")是正确的方法,因为.val()如果它定义了将返回属性值..即使它没有定义它也会返回“on”而不是布尔值..jsfiddle.net/d5f7wnzu
2021-03-20 11:56:14
document.querySelector('.messageCheckbox:checked').value 如果未选中复选框,则生成 TypeError
2021-03-20 11:56:14
@Engineer“保存字节”,因为我们必须简单地编写document.getElementById("foo").value();和“保存计算”,因为getElementById肯定比getElementsByTagName循环更快
2021-03-25 11:56:14
这爆炸了 - 未捕获的类型错误:无法读取 null 的属性“值”
2021-04-01 11:56:14
@Mageek 在多个元素上添加相同的 id 是不好的做法。
2021-04-05 11:56:14

我在我的代码中使用这个。试试这个

var x=$("#checkbox").is(":checked");

如果复选框被选中,则为x真,否则为假。

是的,.is(":checked")帮帮我,谢谢兄弟
2021-03-20 11:56:14
有用 when#checkbox是变量,例如myCheckbox
2021-03-29 11:56:14
这不能回答问题,但可用于确定是否选中了复选框。+1 因为它仍然帮助了我。
2021-04-01 11:56:14
不回答问题,但正是我正在寻找的。
2021-04-05 11:56:14

在普通的javascript中:

function test() {
    var cboxes = document.getElementsByName('mailId[]');
    var len = cboxes.length;
    for (var i=0; i<len; i++) {
        alert(i + (cboxes[i].checked?' checked ':' unchecked ') + cboxes[i].value);
    }
}
function selectOnlyOne(current_clicked) {
    var cboxes = document.getElementsByName('mailId[]');
    var len = cboxes.length;
    for (var i=0; i<len; i++) {
        cboxes[i].checked = (cboxes[i] == current);
    }
}

这并不能直接回答问题,但可能对未来的访问者有所帮助。


如果您希望变量始终是复选框的当前状态(而不是必须不断检查其状态),您可以修改onchange事件以设置该变量。

这可以在 HTML 中完成:

<input class='messageCheckbox' type='checkbox' onchange='some_var=this.checked;'>

或使用 JavaScript:

cb = document.getElementsByClassName('messageCheckbox')[0]
cb.addEventListener('change', function(){some_var = this.checked})
作为未来的访客,我可以确认它有帮助。
2021-03-27 11:56:14