2013-03-06 18 views
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); 
     } 

    } 
+3

你怎么能指望的Javascript只返回“最近检查”复选框的defaultChecked财产? 'checked == true'检查一个盒子是否被选中。维护状态并操纵它取决于你。 – asgs 2013-03-06 08:26:40

+0

你需要多解释一下你想用“新”来说什么。我认为有更多的数据是为了。 – zozo 2013-03-06 08:44:39

回答

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 

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

0

这样的事情......我想。我得到了你想要的价值,因为它们发生。所以,我把eventListerns放在复选框上。点击时...提醒值。当然,你可以为数组设置一个全局对象,然后将它们推送到那里以供以后处理..等等,但是这个想法是即时捕获这些值。在回调中,您可以进行“检查”测试。

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。

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> 
+0

您需要设置签入在加载时的阵列也 – mplungjan 2013-03-06 09:09:58

+0

没有必要这个代码只更改的检查,因此并不需要在加载时设置的检查数组。请复制代码并测试一次。您将更好地了解 – 2013-03-06 09:12:37

+0

请参阅我的答案以获取更简单的解决方案 – mplungjan 2013-03-06 09:14:22

0

你只需要测试盒

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