【发布时间】:2012-10-31 23:24:21
【问题描述】:
我有一个动态预订页面,用户可以通过该页面选择 x 数量的项目用于课程中的人员列表。
例如:每人可能会为课程列出 3 个复选框,但限制为 2。当达到 2 时,该人的剩余 1 个复选框被禁用。
我目前拥有的解决方案在 Firefox 和 chrome 中完美运行,但在 Internet Explorer 中却不行。
解释我的代码的原因:
由于人物和课程项是动态的,为了以后在php中处理选择,每个复选框都有一个动态的名字。
如果每个项目都有一个id,每个人都有一个id 复选框名称基于 [userid_itemid]
当 3 个用户在页面上做出选择时,复选框名称将遵循类似 3 个复选框的模式
对于用户 1-(1_1)、(1_2)、(1_3)
对于用户 2-(2_1)、(2_2)、(2_3)
对于用户 3-(3_1), (3_2), (3_3)
这是使复选框在 firefox 和 chrome 中正确禁用的代码:
$(document).ready(function(){
$("input:checkbox").click(function() {
var chktest="input\\["+$(this).attr('id');
var bol = $("input[name^="+chktest+"_]:checked").length >= 2;
$("input[name^="+chktest+"_]").not(":checked").attr("disabled",bol);
});
});
但是 Internet Explorer(绝对是版本 8)不限制任何形状或形式的复选框。
我上面的代码是基于这个:
Limit Checkbox amount ANSWER 19 显示了一个工作演示。
它可以在此处提供的演示中跨浏览器工作,但由于我的数据是动态的,我的代码更复杂,我认为这是导致问题的原因。
【问题讨论】:
-
我们至少可以看看你有什么吗?
-
抱歉,我的部分问题有问题
-
我重新标记了您的问题,因为您似乎在使用 jQuery(您没有提及)并且您没有在我能看到的任何地方使用正则表达式。随时进行进一步的更正。
-
input[name^="+chktest+"] 这意味着它将使用 ^ 正则表达式检查 'input[1'。
标签: javascript jquery internet-explorer