【问题标题】:disabling checkbox in internet explorer with javascript and regular expression使用 javascript 和正则表达式禁用 Internet Explorer 中的复选框
【发布时间】: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


【解决方案1】:

选项 1

不久前,我写了一个blog entry,其中包含我多年来编写的一些自定义 JQuery 选择器,我想与大家分享。那里有一个供您通过正则表达式进行选择的选项,您可能会发现它很有用。

... 至少这是一个很好的起点,可以让您在需要时编写自己的选择器。 Here's the code on github。我认为你会使用的是:attrregex

选项 2

除此之外,另一种选择是在你的类中为你名字中的每个方面放置自定义属性(假设你可以控制它):

<input type="checkbox" name="user_1-1" data-user="1"/>
<input type="checkbox" name="user_1-2" data-user="1"/>
<input type="checkbox" name="user_1-3" data-user="1"/>
<input type="checkbox" name="user_2-1" data-user="2"/>
<input type="checkbox" name="user_2-2" data-user="2"/>
<input type="checkbox" name="user_2-3" data-user="2"/>

那么你可以通过$('input[data-user=' + userId + ']') 或者你有什么来选择。

我希望那里有帮助。

【讨论】:

  • 感谢您的回复。刚刚尝试了选项 2,但它仍然具有相同的影响....适用于 Firefox,但不适用于 Internet Explorer.. var bol = $("input[data-id="+chktest+"]:checked").length >= = $course->booking_item_max; ?>; $("input[data-id="+chktest+"]").not(":checked").attr("disabled",bol);
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-23
  • 1970-01-01
  • 2012-01-23
  • 1970-01-01
相关资源
最近更新 更多