ff中的forms.elements.length

时间:2010-01-05 12:33:15

标签: javascript firefox

我在JS中有一个表单验证例程,它循环遍历页面上第一个表单的元素。我像这样读取了元素数组的大小:

maxi=document.forms[0].elements.length;

这在IE返回23中工作正常。在FF中,它总是返回0并且根本不执行任何验证。

有什么建议吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

在标记之后移动您的javascript,或确保在加载文档后运行它。听起来像在FF中代码在表单添加到DOM之前运行。

你也可以考虑使用javascript库,比如jQuery(我会推荐这个),MooTools,Prototype等来解决你将遇到的许多不可避免的跨浏览器问题。使用jQuery和validation插件,验证代码非常简单,使用CSS类来帮助验证。

 <script type="text/javascript" src="jquery.js" />
 <script type="text/javascript">
      $(function() { // run on document load
           $('form').validate();  // use validation plugin to validate form
      });
 </script>


 <form ...>
     <input type="text" id="txt" name="txt" class="required" /> <!-- a required element -->
     <input type="text" id="num" name="num" class="required number" /> <!-- a required, numeric element -->
     ...
 </form>

答案 1 :(得分:-1)

你应该尝试一些交互式的javascript控制台来测试这样的问题 - 但是,对于这个特殊的事情,你可以使用{for {in}形式的for迭代元素:

http://en.wikipedia.org/wiki/Foreach#JavaScript

然而,可能是那里的“元素”属性是非标准的,因此您需要检查DOM以获得更好的方法来检索表单小部件作为对象。

最后:提防明确的侧面验证:这通常是用户的负担,如果不采取特别的措施,可以轻松让您的表单停止在各种浏览器/平台上工作,因为验证无论如何都是无意义的(因为你必须验证在任何一种情况下输入服务器端的数据的长度)