原型选择所有复选框代码在IE中工作,但不是Firefox

时间:2009-04-13 20:36:39

标签: javascript internet-explorer firefox prototypejs

我正在使用原型1.6.0.1。我正在尝试在单击按钮时选中所有复选框。此代码适用于IE 6,但不适用于Firefox 3.我做错了什么?

<input class="submit" type="button" value="check all" onclick="$(this.form).getInputs('checkbox').each(function (elem) {elem.checked = true;});" />

4 个答案:

答案 0 :(得分:3)

我创建了一个非常基本的页面来测试您的问题:

<html>
<head>
    <script type="text/javascript" src="prototype-1.6.0.3.js" ></script>
</head>
<body>
    <form>
        <input type="checkbox" id="test1" /> Test 1<br/>
        <input type="checkbox" id="test2" /> Test 2<br/>
        <input type="checkbox" id="test3" /> Test 3<br/>
        <input type="checkbox" id="test4" /> Test 4<br/>
        <input class="submit" type="button" value="check all" onclick="$(this.form).getInputs('checkbox').each(function (elem) {elem.checked = true;});" />
    </form>
</body>
</html>

&安培;它在Firefox 3.0.8(以及IE)中对我有用......

我不同意其他答案... this.form应该没问题(从提交按钮获取表单对象,然后可以通过getInputs从中获取复选框)。

实际问题是什么?什么都没发生?如果是这样,我唯一能想到的是,复选框与按钮的形式相同吗?

编辑:如果您的代码实际上与上述&amp;它不起作用,我能建议的最好的是你将你的onclick变成一个propper函数调用&amp;然后使用firebug计算出哪个特定位不起作用。即使你的代码看起来像这样:

<html>
<head>
    <script type="text/javascript" src="prototype-1.6.0.3.js" ></script>
    <script type="text/javascript" >
        function checkAll(button) {
            var form = $(button.form);
            var inputs = form.getInputs('checkbox');
            inputs.each(function (elem) {
                elem.checked = true;
            });
        }
    </script>
</head>
<body>
    <form>
        <input type="checkbox" /> Test 1<br/>
        <input type="checkbox" /> Test 2<br/>
        <input type="checkbox" /> Test 3<br/>
        <input type="checkbox" /> Test 4<br/>
        <input class="submit" type="button" value="check all" onclick="checkAll(this)" />
    </form>
</body>
</html>

然后你可以把断点放在功能&amp;确保'button','form'和'inputs'符合您的预期,并且每个循环中的'elem'也是如此。

答案 1 :(得分:0)

表单是输入的父级,因此this.form应该没有意义。使用ID选择器或父级。

第二件事 - 声明这个js为文档加载分配动作,这种方式有点混乱,从html中分离js以拥有一个干净灵活的代码库。

在jQuery中它会像:

$(document).ready(function(){
  $.('#submitId').click(function(){ 
    // check the checkboxes
    });
}
原型中的

应该是相似的。

答案 2 :(得分:0)

您可以在此链接中看到解决方案: http://www.ryboe.com/2008/07/10/select-all-checkboxes-with-prototype-js.html

如果您不想点击,请尝试以下操作:

var form = $('options');
checkboxes = form.getInputs('checkbox');
checkboxes.each(function(e){ e.checked = 0 });

答案 3 :(得分:-1)

你替换什么

$(this.form) 

$('MYFORMNAME')