在显示屏中我已经选中了一个复选框。
我想要最近检查过的值,但下面的代码返回所有复选框值,包括已检查的值。
我想获得新检查的值 提前致谢
代码:
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);
}
}
答案 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)
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);
}