使用javascript选择复选框

时间:2011-06-07 17:37:00

标签: javascript html html5

有没有办法使用Javascript和HTML(5)来部分选中复选框,比如只选择一些子选项时程序安装菜单中的复选框?

3 个答案:

答案 0 :(得分:63)

HTML5 defines indeterminate布尔属性。

我只在最新的Safari,Chrome和Firefox中测试过它。他们都支持不确定的国家。

示例:http://jsfiddle.net/5tpXc/

编辑:请注意,这不适用于较旧的浏览器,可能不适用于当前版本的IE。如果你想支持所有浏览器,你需要依赖其他答案中描述的黑客攻击。

答案 1 :(得分:5)

不。您必须制作一个自定义复选框图形并伪造它。

修改:请参阅@Kassen's answer,了解在兼容HTML5的浏览器中使用部分复选框的方法。

答案 2 :(得分:4)

HTML复选框(即input类型的checkbox元素)没有第三个状态(部分检查)。所以不,没有直接的方法来做到这一点。

您可能需要做的是制作一个自定义复选框图像并绑定到其各种事件(例如,单击)以通过JavaScript将其当前“状态”存储在hidden表单字段中。但是,您可能会遇到这种方法的许多问题。

例如,此特定元素可能无法进行表单的键盘导航。 (可以将一个选项卡添加到图像并将其发送给键盘事件吗?我不确定。)

此外,您可以尝试通过JavaScript操作复选框元素上的自定义属性来存储第三个状态。但是元素本身的渲染没有像这样的视觉指示。您可以操纵其样式(颜色,背景颜色,边框颜色等)以尝试模仿视觉行为。但是,您可能无法获得用于参考的确切视觉样式。

这肯定是一个有趣的前景,我很感兴趣,我可能会尝试在不久的将来实现这样的事情。但是使用原生复选框元素,它是不可能的。它只有两个州。

修改:在HTML5中执行此操作,请参阅@kassens' answer。如果您出于任何原因限制使用以前版本的HTML,那么它必须是这里描述的hack。但是,如果您可以依赖支持HTML5的用户,那么看起来就像原生支持一样。