0

在显示中,我已经有一个选中的复选框。

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

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

代码 :

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

4 回答 4

1

You can use the code similar to following example. Here I am using a hash table to record the changes to the check box. Only when the check box set the hash table gets set. when you click submit I am fetches all the values from hash table and displaying them in a alert. You can directly copy paste this code to your IDE and test. You will understand better

<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>
于 2013-03-06T09:02:41.690 回答
0

你只需要测试盒子的defaultChecked属性

if(htmlData[k].checked && !htmlData[k].defaultChecked){
  var chkdids = htmlData[k].value;
  alert(chkdids);
}
于 2013-03-06T09:12:54.567 回答
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

仅供参考,不确定此代码是否真的有效。只是一个想法。

于 2013-03-06T08:56:34.303 回答
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。

于 2013-03-06T09:00:57.527 回答