如何计算HTML名称数组属性中的项目?

时间:2017-09-19 18:07:23

标签: javascript jquery html checkbox count

我有3个复选框,用户只能选择其中的1个或2个。如果用户选择3复选框,我将显示一条消息,其中jQuery说"您无法选择3项"。

<input type="checkbox" value="Walk" name="sports[]">
<input type="checkbox" value="Swim" name="sports[]">
<input type="checkbox" value="Run"  name="sports[]">

是否可以计算sports[]数组内的项目?

5 个答案:

答案 0 :(得分:3)

使用jquery中的:checked选择器检查已检查项目的长度,如果选中其中3个,则取消选中

$('input[name="sports[]"]:checkbox').change(function() {
    if($('input[name="sports[]"]:checked').length>2)
    {
        alert("You can't select 3 items");
        this.checked=false;
    }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="checkbox" value="Walk" name="sports[]">
<input type="checkbox" value="Swim" name="sports[]">
<input type="checkbox" value="Run"  name="sports[]">

答案 1 :(得分:2)

以下解决方案应该适合您

class

答案 2 :(得分:1)

使用名称sports []计算“已选中”复选框的数量,如果计数为3,则输入错误

var count = $('input[name="sports[]"]:checked').length;
if(count >=3){ // stop the form submit and do alert messages }

答案 3 :(得分:1)

你可以用这样的jQuery来检查:

$(document).ready(function(){
    $('input^="sports[]"').on('click',function(){
        var total_checked = $('input^="sports[]":checked').length();
        if(total_checked >= 2)
        {
            alert("You can check any two options.");
            return false;
        }
    });
});

答案 4 :(得分:0)

是的,可以计算sports []数组中的项目。你可以在你去的地方解析标签解析。

let input = document.getElementsByTagName('input');
let result = [...input].map(x => JSON.parse(x.name.replace('sports', '')))
let count = result.map(x => x.length);
console.log('the arrays', result);
console.log('the counts within', count);
.as-console-wrapper { max-height: 100% !important; top: 0; }
<input type="checkbox" value="Walk" name="sports[1,2,3,4]">
<input type="checkbox" value="Swim" name="sports[5,6,7,8]">
<input type="checkbox" value="Run" name="sports[10,11,12,13]">