应该是挺简单的代码, 记录一下分享.

首先最直接的想法就是使用循环, 用局部变量记录已选的checkbox, 达到最大值就将余下的checkbox都禁止选择, 例如以下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "">
<html xmlns="">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>JS限制checkbox复选框多选</title>
<script language="javascript" type="text/javascript">
function onCheckBox(checkbox)
{
var items = document.getElementsByName("item");
var maxChoices = 3;
var flag = 0; for(var i=0; i<items.length; i++)
{
if(items[i].checked)
{
flag ++;
}
}
if(flag >= maxChoices)
{
for(var k=0; k<items.length; k++)
{
if(!items[k].checked)
{
items[k].disabled = true;
}
}
}
else
{
for(var p=0; p<items.length; p++)
{
if(!items[p].checked)
{
items[p].disabled = false;
}
}
}
} function onSubmitVote()
{
var items = document.getElementsByName("item");
var choices = 0;
var maxChoices = 3; for(var j=0; j<items.length; j++)
{
if(items[j].checked)
{
choices ++;
}
}
if(choices == 0)
{
alert("请选择选项再提交");
}
else if(choices > maxChoices)
{
alert("选择选项不能超过 "+ maxChoices + "个");
}
else
{
alert("提交成功");
}
} </script>
</head>
<body >
JS限制checkbox复选框多选
<br><br> <input type="checkbox" value="value1" name="item" onClick="onCheckBox(this);"/> 选项一
<br>
<input type="checkbox" value="value2" name="item" onClick="onCheckBox(this);"/> 选项二
<br>
<input type="checkbox" value="value3" name="item" onClick="onCheckBox(this);"/> 选项三
<br>
<input type="checkbox" value="value4" name="item" onClick="onCheckBox(this);"/> 选项四
<br>
<input type="checkbox" value="value5" name="item" onClick="onCheckBox(this);"/> 选项五
<br><br> <input type="button" id="submit_vote" name="submit_vote" value="提交" onClick="onSubmitVote()" /> </body>
</html>

执行例如以下:

效果是没问题, 但通常第一想法都是比較粗糙的, 好的东西须要加以雕琢. 上面用的的是局部变量, 所以每次进入js的onCheckBox()都是新的变量, 还要循环几次, 但换成全局变量, 每次进入, flag的值都是继续上次操作的值, 那么能够降低循环的次数了. 针对该部分做改动, 例如以下:

<script language="javascript" type="text/javascript">
var maxChoices = 3;
var flag = 0; function onCheckBox(checkbox)
{
var items = document.getElementsByName("item");
//var maxChoices = 3;
//var flag = 0; if(checkbox.checked)
{
flag ++;
}
else
{
flag --;
} if(flag < maxChoices)
{
for(var i=0; i<items.length; i++)
{
if(!items[i].checked)
{
items[i].disabled = false;
}
}
}
else
{
for(var i=0; i<items.length; i++)
{
if(!items[i].checked)
{
items[i].disabled = true;
}
}
} } function onSubmitVote()
{
var items = document.getElementsByName("item");
var choices = 0;
//var maxChoices = 3; for(var j=0; j<items.length; j++)
{
if(items[j].checked)
{
choices ++;
}
}
if(choices == 0)
{
alert("请选择选项再提交");
}
else if(choices > maxChoices)
{
alert("选择选项不能超过 "+ maxChoices + "个");
}
else
{
alert("提交成功");
}
} </script>

这样效果是一样的, 但循环就少一次.

JS在页面限制checkbox最大复选数的更多相关文章

  1. 在Servlet端获取html页面选中的checkbox值,request获取页面checkbox(复选框)值

    html端代码: 选项框: <input type="checkbox" name="crowd" value="选项一">选项 ...

  2. 【JS新手教程】LODOP打印复选框选中的内容

    在html中,复选框是常见的使用之一,本文介绍如何获取选中的复选框的值,并用LODOP打印.给需要为一组的复选框,复选框的checkbox设置相同的name属性,设置不同的id,然后设置需要的valu ...

  3. 【JS新手教程】LODOP打印复选框选中的任务或页数

    之前的博文:[JS新手教程]LODOP打印复选框选中的内容关于任务:Lodop打印语句最基本结构介绍(什么是一个任务)关于本文用到的JS的eval方法:JS-JAVASCRIPT的eval()方法该文 ...

  4. ionic-CSS:ionic checkbox(复选框)

    ylbtech-ionic-CSS:ionic checkbox(复选框) 1.返回顶部 1. ionic checkbox(复选框) ionic 里面的 Checkbox 和普通的 Checkbox ...

  5. checkbox对齐-复选框图标

    checkbox对齐-复选框图标 一般开发过程中,我们直接使用<input type="checkbox"/>这样出现的复选框,设计师一般都说不好看 而让我们按照设计稿 ...

  6. JSP如何保存页面上众多的复选状态

    一.描述: 最近写的一个问题管理模块,录入问题时需要选择客户(也就是那些客户存在这些问题),当保存完问题后,再次编辑问题时,如何从数据库里读取上次选中的客户并展示位勾选状态呢?问题表cust_ques ...

  7. NopCommerce 3.4中商品详情页面单选框、复选框的美化

    先上图给大家看看效果,点这里打开网站(后期可能会找不到这个商品,现在再测试阶段) 现在你能看到的这个页面中,尺寸.文本描述是单选框(属性是我乱写的名字),上门安装是复选框.效果就看到这里,请君跳过图片 ...

  8. jquery处理checkbox(复选框)是否被选中

    现在如果一个复选框被选中,是用checked=true,checked="checked"也行 要用prop代替attr会更好,虽然在jQuery1.6之前版本的attr()方法能 ...

  9. jquery如何判断checkbox(复选框)是否被选中(转)

    谁都知道 在html 如果一个复选框被选中 是 checked="checked". 但是我们如果用jquery alert($("#id").attr(&qu ...

随机推荐

  1. python中return和print的区别(详细)

    huskiesir最近在研究python哈,今天纠结一个问题,那就是return和print的区别,都是可以输出结果的,到底有啥区别呀?二话不多说,看下面的例子. #代码1: def break_wo ...

  2. Maven系列--web.xml 配置详解

    一 .web.xml介绍 启动一个WEB项目的时候,WEB容器会去读取它的配置文件web.xml,读取<listener>和<context-param>两个结点. 紧接着,容 ...

  3. 【hdu 6319】Ascending Rating

    [链接] 我是链接,点我呀:) [题意] 给你一个长为n的数组a 让你对于每个长度为m的窗口. 算出其中的最大值以及从左往右遍历的时候这个最大值更新的次数. [题解] 单调队列. 从后往前滑动窗口. ...

  4. 电子签章盖章之jQuery插件jquery.zsign

           简介:  使用jquery.zsign可以实现电子签章盖章效果,使用方便,只需提供自己的章图片.效果图如下:        页面引用:        <link href=&quo ...

  5. HDU 4339 Contest 4

    树状数组,主要是抓住要求连续1的个数.这样,初始时,相同的加1,不同的加0. 查询时,用二分搜索右边界.就是比较当前mid-l+1的值与他们之间1的个数(这可以通过树状数组求区间和得出),记录右边界即 ...

  6. xpee.vbs

    xpee.vbs Win 8安装之后每一次重启桌面都会有一个360浏览器的快捷方式,终于找到原因了, 在Windows/System下面有这么个文件: Set ws = CreateObject(&q ...

  7. Android实现天气预报温度/气温折线趋势图

     Android实现天气预报温度/气温折线趋势图 天气预报的APP应用中,难免会遇到绘制天气温度/气温,等关于数据趋势的折线或者曲线图,这类关于气温/温度的折线图,通常会有两条线.一条是高温线,一 ...

  8. ValidForm的使用

    1.引入css 请查看下载文件中的style.css,把里面Validform必须部分拷贝到你的css中(文件中这个凝视 "/*==========下面部分是Validform必须的==== ...

  9. 从头认识Spring-3.4 简单的AOP日志实现-扩展添加检查订单功能,以便记录并检測输入的參数

    这一章节我们再上一个章节的基础上加上一个检查订单功能 1.domain 蛋糕类: package com.raylee.my_new_spring.my_new_spring.ch03.topic_1 ...

  10. node--20 moogose demo2

    db.js /** * Created by Danny on 2015/9/28 16:44. */ //引包 var mongoose = require('mongoose'); //创建数据库 ...