javascript - 检测复选框被点击的顺序

标签 javascript jquery checkbox

我正在尝试制作一个允许用户从总共 25 个复选框中选择 8 个复选框的页面。

我想知道,如何检测他们检查它们的确切顺序。我正在使用一个普通的 html 主页,它将通过指向 php 页面的表单操作进行验证。

我试图为八个复选框获取类似(checkbox1、checkbox2、checkbox6、checkbox3、checkbox7 等)的结果,以及它们被点击的确切顺序。

我想我已经找到了我要找的东西,我不太确定,但我在实现它时遇到了困难。

这就是我目前所拥有的,我想我的问题是,一旦用户提交了表单,我需要什么类型的 php 来收集这些信息。

对于我的表格:

<form id="form1" name="form1" method="post" action="check_combination.php">
    <label id="lblA1"></label> 
    <input name="checkbox1" type="checkbox" value="a1" onclick="setChecks(this)"/> Option 1 
    <label id="lblA2"></label> 
    <input name="checkbox1" type="checkbox" value="a2" onclick="setChecks(this)"/> Option 2 
    <label id="lblA3"></label> 
    <input name="checkbox1" type="checkbox" value="a3" onclick="setChecks(this)"/> Option 3 
    <label id="lblA4"></label> 
    <input name="checkbox1" type="checkbox" value="a4" onclick="setChecks(this)"/> Option 4
</form>

对于我拥有的 Javascript:

<script type="text/javascript">
<!--
//initial checkCount of zero
var checkCount=0

//maximum number of allowed checked boxes
var maxChecks=8

function setChecks(obj){
//increment/decrement checkCount
if(obj.checked){
checkCount=checkCount+1
}else{
checkCount=checkCount-1
}
//if they checked a 4th box, uncheck the box, then decrement checkcount and pop alert
if (checkCount>maxChecks){
obj.checked=false
checkCount=checkCount-1
alert('you may only choose up to '+maxChecks+' options')
}
}
//-->
</script>

<script type="text/javascript">
<!--
$(document).ready(function () { 
    var array = []; 
    $('input[name="checkbox1"]').click(function () { 
        if ($(this).attr('checked')) { 
            // Add the new element if checked: 
            array.push($(this).attr('value')); 
        } 
        else { 
            // Remove the element if unchecked: 
            for (var i = 0; i < array.length; i++) { 
                if (array[i] == $(this).attr('value')) { 
                    array.splice(i, 1); 
                } 
            } 
        } 
        // Clear all labels: 
        $("label").each(function (i, elem) { 
            $(elem).html(""); 
        }); 
        // Check the array and update labels. 
        for (var i = 0; i < array.length; i++) { 
            if (i == 0) { 
                $("#lbl" + array[i].toUpperCase()).html("first"); 
            } 
            if (i == 1) { 
                $("#lbl" + array[i].toUpperCase()).html("second"); 
            } 
        } 
    }); 
});
//-->
</script>

我得到了只允许选中 8 个复选框的部分,但我仍然不知道在将数据提交到名为 check_combination.php 的页面后我需要做些什么来实际解析数据。

如果有任何帮助,我将不胜感激

最佳答案

  • 创建一个包含订单的隐藏输入字段
  • 当事情发生变化时更新这个输入字段
  • 您将准备好由 PHP 处理的订单

关于javascript - 检测复选框被点击的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3846712/

相关文章:

jquery - 在段落中找到第 N 个单词,添加一个 anchor ,然后隐藏剩余的文本

html - 选中复选框 ID 但在所有复选框下方时显示 div

javascript - 如何使用 Regex 按文件格式取消选中所有文件

jquery - 使用 Jquery/CSS 更改负数的文本字段背景颜色

javascript - 将 XML 放入 JavaScript 数组中,然后获取值并将其写入

javascript - D3.js Canvas 上下文填充错误

javascript - 为什么 onload 事件没有按预期绑定(bind) `this` 变量?

javascript - 如何在 Tampermonkey 中打开带有网页的 javascript 窗口?

wpf - 如何让复选框在 WPF 数据网格中工作

javascript - 纹理 Sprite 在 Three.js 中是全黑的