JS/JQuidecure比较的正确语法
proper syntax for js/jquery comparative?
我已经尝试了许多不同的组合,它们似乎都无法正常工作,我知道它一定是我的语法有关......
基本上,我有一排复选框。月份 十月 至 三月 如果只选中了一个复选框,并且其中一个复选框是 10 月或 3 月,则触发。
这是我的代码。(我已经能够正确抓住noofmonth了。
if (noofmonths == "1" && ( $('#month_oct:checked') || $('#month_mar:checked') )) {
tempbase = tempbase + 200;
}
alert(tempbase);
我遇到的问题是,它似乎并不关心我检查了哪个月份。无论哪个月,我总是增加 200....noofmonth 确实可以正常工作,因为如果我选中了多个复选框,这不会触发。
我在这里错过了什么? 我感谢您的帮助!
问题是$('someselector')
总是返回一个 jQuery 对象,即使没有元素与 'someselector'
匹配。任何物体,即使是空的,都是"真实的"。
您应该做的是:
if (noofmonths == "1" && ( $('#month_oct:checked').length > 0
|| $('#month_mar:checked').length > 0 )) {
// OR
if (noofmonths == "1" && ( $('#month_oct').is(':checked')
|| $('#month_mar').is(':checked')) {
当没有元素匹配时,生成的 jQuery 对象的length
将被0
。另一方面,.is()
方法返回一个布尔值。
话虽如此,我会考虑一种不同的方法来获得这种效果。我会给整行复选框一个公共类(除非它们已经共享一个name
属性?),然后给特殊的复选框(Oct & Mar)一个额外的类:
<input type="checkbox" class="month" value="Jan">
...
<input type="checkbox" class="month oneonly" value="Mar">
...
因为这样你就可以这样做:
var $checked = $(".month:checked");
if ($checked.length === 1 && $checked.hasClass("oneonly")) {
...
也就是说,首先将所有复选框检索到 $checked
变量中,然后如果数字为 1 并且该数字具有将其标记为 March 或 October 的类......这样,如果将来 July 突然变得"特殊",您只需要在 html 中添加 "oneonly" 类(或任何您想命名的类),您根本不需要更改您的 JavaScript。
length
属性:
var len = $('#month_oct:checked, #month_mar:checked').length;
if (noofmonths == "1" && len > 0) {
tempbase = tempbase + 200;
}
演示
您必须测试匹配查询的长度。
if (noofmonths == "1" && ( $('#month_oct:checked').length || $('#month_mar:checked').length )) {
您只是选择复选框,而不是检查它们是否确实被选中。
if (noofmonths == "1" && ( $('#month_oct')[0].checked || $('#month_mar')[0].checked )) {
tempbase = tempbase + 200;
}
或者$('#month_oct').is(':checked');
也会返回一个布尔值,或者你可以实际选中复选框,并检查选择器是否有长度,就像其他答案一样。
- 比较从函数和生成的日期对象
- 如何使用 node.js 比较两个 json 数组
- jQuery自定义验证比较多个输入的序列
- 铬:“;未捕获的语法错误:意外的标记:"
- jQuery语法添加了var
- Javascript未捕获语法错误意外的标识符错误
- 为什么忽略了eval()代码中的语法错误
- 反向字符串比较
- 难以访问的JS环境中的语法错误
- 如何告诉MathJax对下标使用替代语法
- Javascript语法向设置发出sessionStorage值
- 通过JSON&比较时间
- 将DOM节点值与字符串Javascript进行比较
- 未捕获的语法错误:意外的标记{
- 从键值结构中获取数据,并将其与AngularJS中ng重复的值进行比较
- 使用$scope方法时的ControllerAs语法
- JS/JQuidecure比较的正确语法
- ' if (condition = value) '是进行比较的正确语法吗?
- 我'我有麻烦的语法为我的比较函数的javascript
- Javascript多重比较表达式语法