Firefox不会验证表单数据

时间:2011-10-14 00:39:05

标签: javascript html forms

以下使用带有onclick按钮的javascript的简单表单在Firefox中不起作用(我有版本7)但在IE,Chrome和Safari中工作正常。 我错过了什么?

<head>
<script type="text/javascript">
    function result() {
        alert(calc.input.value);
        }
</script>

</head>
<body>

<form name="calc" action="">
    <input class="cInput" type="text" name="input" size="16" /><br/>
    <input type="button" class="cButton" name="seven" value="1" onclick="calc.input.value += '1'" />
    <input type="button" class="cButton" name="equal" value="=" onclick="result()" /><br/>
</form>
</body>

2 个答案:

答案 0 :(得分:1)

<script type="text/javascript">
    var calc;
    function result() {
        calc = document.forms['calc'];
        alert(calc.input.value);
        }
</script>

答案 1 :(得分:1)

  

我错过了什么?

您缺少IE将元素名称和ID添加为全局变量。某些条件下的某些其他浏览器(有时需要文档处于怪癖模式)会复制该habbit,有些则不会。

因此,在IE(以及其他一些)中,表单名称​​ calc 是引用表单的全局变量,而在其他浏览器中则不是。

Dunuyadnd的答案中的方法是一种强大的跨浏览器方式来获取对表单的引用。正式的访问方法是:

document.forms['calc'];

可以类似地访问命名表单控件:

document.forms['calc'].elements['input'];

document.calc.input;

小心提供与标签相同的控件名称,这有点令人困惑。此外,如果有多个具有相同名称的控件,您将获得HTML collection而不是单个元素。

您可能想了解HTMLForms及其相关元素。