0

我有一个动态预订页面,用户可以选择 x 数量的项目用于课程中的人员列表。

一个例子:每个人的课程可能列出 3 个复选框,但限制为 2。当达到 2 时,该人的剩余 1 个复选框被禁用。

我目前拥有的解决方案在 Firefox 和 chrome 中完美运行,但在 Internet Explorer 中却不行。

解释我的代码的原因:

因为person和course项是动态的,为了以后在php中处理选择,每个checkbox都有一个动态的名字。

如果每个项目都有一个 id,每个人都有一个 id,则复选框名称基于 [userid_itemid]


当 3 个用户在页面上为用户 1-(1_1)、(1_2)、(1_3)
为用户 2-(2_1)、(2_2)进行选择时,复选框名称将遵循类似 3 个复选框的模式, (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)不限制任何形状或形式的复选框。

我上面的代码是基于此:

限制复选框数量 ANSWER 19 显示了一个工作演示。

它可以在此处提供的演示中跨浏览器工作,但由于我的数据是动态的,我的代码更复杂,我认为这导致了这个问题。

4

1 回答 1

0

选项1

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

...至少这是一个很好的起点,如果您需要,如何编写自己的选择器。 这是 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"/>

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

我希望那里有帮助。

于 2012-10-31T15:17:18.543 回答