仅从选中的复选框中获取值

时间:2011-09-27 00:00:21

标签: javascript html forms

我正在尝试使用javascript从复选框中获取值。 我只想将一个复选框值传递给javascript函数,如果选择了多个,则会出现一个警告框,通知只能检查一个框的功能。
我试过这个:

var publish_trigger = document.querySelector("#publish_trigger");
publish_trigger.onclick = function() {
  var _posts = document.getElementsByName('post_id[]');
  var check = _posts.checked;
  var boxes = _posts.length;
  var txt = "";
  if(check.length > 1) {
    alert("Only one at a time");
  } else {
    for (i = 0; i < boxes; i++) {
      if (_posts[i].checked) {
        txt = txt + _posts[i].value + " "
      }
    }
  }
  alert(txt);
  return false;
}

1 个答案:

答案 0 :(得分:0)

此代码错误:

var _posts = document.getElementsByName('post_id[]');
var check = _posts.checked;  

getElementsByName()返回一个NodeList(实际上是一个数组)元素,因此您的变量_posts没有checked属性。您需要遍历_posts来计算_posts中各个元素的已检查属性。

你已经有了一个for循环,所以在那里添加验证:

var count = 0;
for (var i = 0; i < boxes; i++) {
   if (_posts[i].checked) {
      if (++count > 1) {
         alert("Only one checkbox may be checked at a time.");
         return false;
      }
      // I don't know what you're trying to do with the following line
      // but I've left it in.
      txt = txt + _posts[i].value + " " 
   }
}

(注意:与您的问题无关,您应该在函数中声明循环计数器i,否则它将是全局的,如果您在其他地方也使用它,可能会导致难以调试问题。)< / p>