Js_检查复选框选中个数

来源:互联网 发布:汤姆克兰西知乎 编辑:程序博客网 时间:2024/06/06 04:55

结合javascript对复选框选中个数进行检查

具体行为:假设一共5个复选框,如果用户最后一个选择了yes,但前面4个没有一个yes,那么弹窗提醒

这篇涉及到的我也不是很懂,只是真实记录我经过数次修改后最终working的版本。个中道理我还不清楚。

首先javascript代码很好写:

if(checkbox1=="no"&&checkbox2=="no"&&checkbox3=="no"&&checkbox4=="no"&&acheckbox5=="yes"){    alert("you haven't choose neither one of the first 4 boxes!");    return false;}

但糊(hu↘)的地方来了

假设用于检查的功能的函数名为check(){},那么要想上面那段代码正常发挥作用,在function check(){...}中定义变量时,这5个复选框代表的变量都需要加上‘checked’

var checkbox1=$("#orm_name1 [name='checkbox1']:checked").val();//':checked'是我最终运行成功的关键部分var checkbox2=$("#orm_name1 [name='checkbox2']:checked").val();//如果没有':checked'不管选没选都会不停提示alert()中的内容var checkbox3=$("#orm_name1 [name='checkbox3']:checked").val();var checkbox4=$("#orm_name1 [name='checkbox4']:checked").val();var acheckbox5=$("#orm_name1 [name='acheckbox5']:checked").val();//previous "#orm_name1" is in //{//  <form id="orm_name1" [rest omitted]">//  <table>//  [omitted]//  </table>//}here

究竟为什么加上才能正确运行我还不清楚,如果各位有明白的我期待评论中的解答:)


(按惯例(才怪))附上小彩蛋: javascript中&&和||的细节

由于javascript是弱类型语言,所以在javascript中这两个表达式可能跟其他语言(比如java)中不太一样。

在javascript中,“&&”运算符运算法则如下:

如果&&左侧表达式的值为真值,则返回右侧表达式的值;否则返回左侧表达式的值。

这就是说:

var i=""&&"真值";//->i=""i="真值"&&"其他真值";//->i="其他真值"i="真值"&&"";//->i=""

另:

true&&true 结果是truefalse&&true结果是false

“||”运算符的运算法则如下:

如果||左侧表达式的值为真值,则返回左侧表达式的值;否则返回右侧表达式的值。

这就是说:

var i=""||"真值";//->i="真值"i="真值"||"其他真值";//->i="真值"i="真值"||"";//->i="真值"

最后是网上一道面试题 origin: http://www.pm-road.com/index.php/2014/09/13/102/

在js中写出如下的答案 :var a = 2;var b = 3;var andflag = a && b ;var orflag = a || b;问andflag 和orflag 分别是什么?起初我认为: andflag 和orflag 的值都为 true; 毕竟 && 和 || 都是求Boolean ,后来发现,我错了。答案应该是  andflag  = 3,orflag = 2;原因是这样的:在运算过程中,首先js  会将 && 和||  两边的值转成Boolean 类型,然后再算值 ,&&运算如果返回true,则取后面的值,如果|| 返回true,则取前面的值 , 而其中数值转换成boolean 的规则 是:对象、非零整数、非空字符串返回true,其它为false   ;a && b  的运算就是  :因为  a  和  b全是非零整数,所以  a  和  b  也就是true ,而   true && true  返回   true   ,则取后面的b   ,同理  a 和b 全是非零整数,a  和b  全是true  ,则true || true  返回   true ,取|| 前面的值 也就是2;同样:该逻辑运算符支持短路原则:如 var  a = “”  ||  null  || 3  ||  4   —->    var a = fasel || false || true ||  true  结果为true  则返回第一个true,即是3var b = 4 && 5 && null && 0   ——>   var b = true && true && false && false   结果是false   则返回第一个false   即是null .
0 0