获取复选框的当前选中值

时间:2013-03-06 08:24:24

标签: javascript

在显示屏中我已经选中了一个复选框。

我想要最近检查过的值,但下面的代码返回所有复选框值,包括已检查的值。

我想获得新检查的值 提前致谢

代码:

function updatePermissions(data){ //function

    var chkdValue = null;

    var permissions = data.split(";");
    var htmlData = document.getElementsByName("permission");//name of checkboxes
    for(var k=0;k<htmlData.length;k++){
        if(htmlData[k].checked==true){
            var chkdids = htmlData[k].value;
            alert(chkdids);
        }

    }

4 个答案:

答案 0 :(得分:1)

您可以使用类似于以下示例的代码。这里我使用哈希表来记录对复选框的更改。仅当复选框设置哈希表时才设置。当您单击提交时,我将从哈希表中提取所有值并在警报中显示它们。您可以直接将此代码粘贴到IDE并进行测试。你会明白的更好

<html>
<head>
<script>
        var flag={};
        function set(obj)
        {
            if(document.getElementById(obj.id).checked)
            flag[obj.id]=obj.id;
        }

        function checknew()
        {

            for (key in flag) {
                alert(flag[key]);
            }
            for (key in flag) {
                delete flag[key];
            }

        }
        </script>
  </head>
  <body>
    <input type="checkbox" id="first" onclick="set(this)"/>
    <input type="checkbox" id="second" checked="checked" onclick="set(this)"/>
    <input type="button" value="submit" onclick="checknew()"/>

  </body>
</html>

答案 1 :(得分:0)

需要更好地了解您的代码,但您可以做的是为每个复选框添加eventListener,这样当它更改时,它会将该复选框的值推送到数组中。这实际上取决于你如何定义“最近”...这是否意味着在同一个会话期间?或者也许经过x段时间?也许你可以做setTimeout并在一段时间后清除阵列?

var checkedArray = [];
var permissions = data.split(";");
$('input[name=permission]').change(function() {
  if (this.checked) {
    checkedArray.push(this.value);
  } 
}
//checkedArray should populate with values of checkbox

setTimeout(function() { checkedArray = []; }, 10000); 
//after 10 seconds it will clear checkedArray

我们不确定这段代码是否真的有效。只是一个想法。

答案 2 :(得分:0)

像这样的东西......我想。我得到你想要的价值的印象。所以,我把eventListerns放在复选框上。单击它们时...提醒值。当然,你可以为数组设置一个全局obj,然后将它们推送到那里以便以后处理等等。但是想法是动态捕获这些值。在回调中,您可以进行“检查”测试。

var checkBxs = document.getElementsByName("permission");
  for(var i = 0; i < checkBxs.length; i++){
    checkBxs[i].addEventListener("click", function(){console.log(this.value)}, false);
  }

使用原生javascript。你没有规定jQuery。

答案 3 :(得分:0)

您只需要测试框的defaultChecked属性

if(htmlData[k].checked && !htmlData[k].defaultChecked){
  var chkdids = htmlData[k].value;
  alert(chkdids);
}