如何使用由javascript控制的php进行复选框输入?

如何使用由javascript控制的php进行复选框输入?,javascript,php,html,Javascript,Php,Html,嗨,我的html中有一个基本的a复选框列表,它由一个脚本控制,该脚本将复选框限制为仅4个。现在,我只需要选择用户选择的复选框,我似乎没有一个好主意去选择它 <form name="form1" method="post" action=""> <table> <tr><td > </td></tr> <tr><td ><input

嗨,我的html中有一个基本的a复选框列表,它由一个脚本控制,该脚本将复选框限制为仅4个。现在,我只需要选择用户选择的复选框,我似乎没有一个好主意去选择它

<form name="form1" method="post" action="">
<table>



<tr><td > </td></tr>
<tr><td ><input  type=checkbox  name="ckb" value="web" onclick='chkcontrol(0)';></td><td >Web Programming</tr>
<tr><td ><input type=checkbox name="ckb" value="data" onclick='chkcontrol(1)';></td><td >Data Structures</td></tr>
<tr><td ><input type=checkbox name="ckb" value="automata" onclick='chkcontrol(2)';></td><td >Automata</td></tr>
<tr><td ><input type=checkbox name="ckb" value="network" onclick='chkcontrol(3)';></td><td >Computer Networks</td></tr>
<tr><td ><input type=checkbox name="ckb" value="oraganization" onclick='chkcontrol(4)';></td><td >Computer Organization</td></td></tr>
<tr><td ><button class="btn btn-primary btn-sm" type="submit">Save&nbsp;</button></td></td></tr>


</table></form>

网络编程
数据结构
自动机
计算机网络
计算机组织
拯救
这是剧本

<script type="text/javascript">
function chkcontrol(j) {
    var total = 0;
    for (var i = 0; i < document.form1.ckb.length; i++) {
        if (document.form1.ckb[i].checked) {
            total = total + 1;
        }
        if (total > 4) {
            alert("Please Select only four")
            document.form1.ckb[j].checked = false;
            return false;
        }
    }
}

功能CHKC控制(j){
var合计=0;
for(var i=0;i4){
警报(“请仅选择四个”)
document.form1.ckb[j].checked=false;
返回false;
}
}
}

现在我尝试将复选框的名称更改为数组,但我的JavaScript无法工作。我需要一个可以同时处理这两个复选框的东西。看起来你需要一种不同的方式来获取这些复选框。这里有一种使用的方法

功能chkcontrol(j){
var合计=0;
const checkbox=document.form1.querySelectorAll('input[type=“checkbox”]”);
对于(变量i=0;i4){
警报(“请仅选择四个”)
复选框[j]。选中=假;
返回false;
}
}
}

网络编程
数据结构
自动机
计算机网络
计算机组织
拯救

我删除了
onclick
事件,添加了类并收听了该事件。复选框值被推入数组
checkedValues

让checkedNo=0;
让checkedValues=[]
const el=document.getElementsByClassName('checkbox');
对于(设i=0;i{
如果(event.target.checked&(checkedNo==4)){
event.target.checked=false;
返回;
}
如果(!event.target.checked&&(checkedNo>0)){
checkedNo=checkedNo-1;
checkedValues=checkedValues.filter(e=>e!==event.target.value);
}
if(event.target.checked){
checkedValues.push(event.target.value)
支票号码++
}
如果(选中否===4){
console.log(checkedValues)
}
}
)
}

网络编程
数据结构
自动机
计算机网络
计算机组织
拯救

脚本在哪里?很抱歉,我遇到了一些问题,现在应该可以看到脚本了。您必须更改名称,因为这样您根本没有有效的HTML结构。最后一个复选框将始终覆盖前面的所有复选框。对于脚本,只需向复选框中添加一个类并通过该类处理它们,而不是访问
document.form1.checkbox\u name
。返回使用数组,但将复选框的值添加到数组中。当数组长度达到4时,就停止接受值。