选中复选框,然后执行功能(不工作)
Check if checkbox is checked then do function (not working)
HTML
<fieldset>
<h4>Meal Time</h4>
<div class="checkbox1">
<input type="checkbox" value=".breakfast"/>
<label>Breakfast</label>
</div>
<div class="checkbox2">
<input type="checkbox" value=".lunch"/>
<label>Lunch</label>
</div>
<div class="checkbox3">
<input type="checkbox" value=".dinner"/>
<label>Dinner</label>
</div>
<div class="checkbox4">
<input type="checkbox" value=".snacks"/>
<label>Snacks</label>
</div>
</fieldset>
JS
var rangesliderfilter = function () {
var low = parseInt(jQuery('#min-value-span').text());
var high = parseInt(jQuery('#max-value-span').text());
var BreakfastDR = [];
var LunchDR = [];
var DinnerDR = [];
var SnacksDR = [];
var TheString = []; /*This is the var I want the string to be in*/
while (low <= high) {
BreakfastDR.push('.' + low +'.breakfast');
LunchDR.push('.' + low +'.lunch');
DinnerDR.push('.' + low +'.dinner');
SnacksDR.push('.' + low +'.snacks');
low++;
}
if (jQuery(".checkbox1 input[type='checkbox']").is(':checked')){
TheString.push(BreakfastDR)
}
if (jQuery(".checkbox2 input[type='checkbox']").is(':checked')){
TheString.push(LunchDR)
}
if (jQuery(".checkbox3 input[type='checkbox']").is(':checked')){
TheString.push(DinnerDR)
}
if (jQuery(".checkbox4 input[type='checkbox']").is(':checked')){
TheString.push(SnacksDR)
}
jQuery('.rangecheck').attr('value', TheString);
}
目标
要创建遵循此模式的字符串:
刚刚检查早餐:.0.breakfast,.1.breakfast,.2.breakfast,etc
检查早餐和午餐:.0.breakfast,.1.breakfast,.2.breakfast,.0.lunch,.1.lunch,.2.lunch
如果有其他人被选中,它会继续这种模式,每个数字后面都有晚餐或小吃。
这是一个JS篡改JS代码,从第140行开始
点击此处查看JS Fiddle
字符串输出到控制台
我该如何实现目标
您的Uncaught SyntaxError
正在发生,因为您错过了is
之前的周期。此外,正如Arun在下面提到的,你的条件周围缺少parens
if(jQuery(".checkbox1 input[type='checkbox']").is(':checked')){
TheString.push(BreakfastDR)
}
if(jQuery(".checkbox2 input[type='checkbox']").is(':checked')){
TheString.push(LunchDR)
}
if(jQuery(".checkbox3 input[type='checkbox']").is(':checked')){
TheString.push(DinnerDR)
}
if(jQuery(".checkbox4 input[type='checkbox']").is(':checked')){
TheString.push(SnacksDR)
}
你可以说我疯了,但我认为你可以用不同的方式来做这件事。更新您的HTML,使您想要验证的所有复选框都具有相同的类:
<fieldset>
<h4>Meal Time</h4>
<div class="checkbox1">
<input type="checkbox" value=".breakfast" class="checkMe"/>
<label>Breakfast</label>
</div>
<div class="checkbox2">
<input type="checkbox" value=".lunch" class="checkMe"/>
<label>Lunch</label>
</div>
<div class="checkbox3">
<input type="checkbox" value=".dinner" class="checkMe"/>
<label>Dinner</label>
</div>
<div class="checkbox4">
<input type="checkbox" value=".snacks" class="checkMe"/>
<label>Snacks</label>
</div>
</fieldset>
然后使用.each()
在您的功能中执行检查
var rangesliderfilter = function () {
var low = parseInt($('#min-value-span').text(),10),
high = parseInt($('#max-value-span').text(),10),
LunchDR = [],
DinnerDR = [],
SnacksDR = [],
TheString = []; //Corresponding vars that are checked separated
while (low <= high) {
BreakfastDR.push('.' + low +'.breakfast');
LunchDR.push('.' + low +'.lunch');
DinnerDR.push('.' + low +'.dinner');
SnacksDR.push('.' + low +'.snacks');
low++;
}
$('.checkMe').each(function(i){
var self = this;
if(self.checked){
switch(i+1){
case 1:
TheString.push(BreakfastDR);
break;
case 2:
TheString.push(LunchDR);
break;
case 3:
TheString.push(DinnerDR);
break;
case 4:
TheString.push(SnacksDR);
break;
}
}
});
$('.rangecheck').val(TheString);
}
这将使用WAY较少的开销执行与if ... is.(':checked')
相同的验证。此外。。。不要使用.attr('value')
,除非您使用的是类似jQuery 1.4的内容。.val()
在这一点上是相当标准的。使用parseInt
时,请始终包含基本参数,如果您正在进行标准解析,则该参数通常为基本10。
相关文章:
- JavaScript打印功能使日历停止工作
- jQuery滚动功能只工作一次
- 为什么ng控制器不调用或工作或功能不工作
- 点击功能没有'ajax调用动态元素(Backbone)后无法工作
- AngularJs中的自动完成功能无法正常工作
- 为什么获胜'我的自定义功能工作
- 角度控制器功能赢得'不按指令工作
- 当我用鼠标左键点击时,让这个功能工作起来
- 重新启动游戏jQuery功能不工作
- 滚动功能不工作
- 角度控制器功能不;在指令内部调用时,似乎无法始终如一地工作
- JS不工作:Sublime 3编辑器-Var main=函数()-=不是“”;激活“;(功能新手)
- 单击水平滚动库中的图像以居中显示无法工作的功能
- MVC 分部视图中的 JQuery UI 自动完成功能只能工作一次
- 为什么本机浏览器排序功能的工作速度比快速排序慢
- 正在尝试获取此代码'在wordpress页面中工作的功能
- JavaScript:如何适应Firefox和/或Chrome的工作功能(IE)
- JQuery不工作.(功能)
- 无工作功能,具有ng-repeat
- 在角度方向don't控制器的工作功能