0

我有像下面这样的复选框,显示一周中的所有日子。

在此处输入图像描述

复选框的值分别为 1、2、3、4、5、6、7。

我需要在 javascript 中有一个验证逻辑来​​验证用户是否单击了连续天数的复选框。连续天数可以从任何一天开始。喜欢,

周三、周四、周五、周六、周日 (4,5,6,7,1)

周一、周二、周三、周四、周五、周六(2、3、4、5、6、7)

周六、周日、周一、周二、周三、周四(7、1、2、3、4、5)

周二、周三、周四、周五、周六、周日(3、4、5、6、7、1)等。

应选择至少 5 天。不应允许用户选择如下示例:

周六、周日、周一、周三、周四(7、1、2、4、5)

周一、周三、周四、周五、周六(2、4、5、6、7)

周二、周四、周五、周六、周日(3,5,6,7,1)

有没有办法在 javascript/jquery 中处理这个验证?

4

2 回答 2

1

如果您可以将选定的值放入数组中,那么

function test(values){

    if(values.length !=5 ){
        return false;
    }

    var expected = values[0], valid = true;
    $.each(values, function(i, v){
        if( expected != v){
            valid = false;
            return false;
        }
        expected  = v == 7 ? 1 : v + 1;
    })

    if(!valid){
        return false;
    }

    return true;
}

演示:小提琴

于 2013-05-14T04:57:01.237 回答
0
 function checkboxlimit(checkgroup, limit){
var checkgroup=checkgroup
var limit=limit
for (var i=0; i<checkgroup.length; i++){
    checkgroup[i].onclick=function(){
    var checkedcount=0
    for (var i=0; i<checkgroup.length; i++)
        checkedcount+=(checkgroup[i].checked)? 1 : 0
    if (checkedcount>limit){
        alert("You can only select a maximum of "+limit+" checkboxes")
        this.checked=false
        }
    }
}
 }

在正文部分添加这个

  checkboxlimit(document.forms.world.countries, 2) // here 2 states to select only two check box
于 2013-05-14T04:47:12.163 回答