我在JS中有一个表单验证例程,它循环遍历页面上第一个表单的元素。我像这样读取了元素数组的大小:
maxi=document.forms[0].elements.length;
这在IE返回23中工作正常。在FF中,它总是返回0并且根本不执行任何验证。
有什么建议吗?
谢谢!
答案 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以获得更好的方法来检索表单小部件作为对象。
最后:提防明确的侧面验证:这通常是用户的负担,如果不采取特别的措施,可以轻松让您的表单停止在各种浏览器/平台上工作,因为验证无论如何都是无意义的(因为你必须验证在任何一种情况下输入服务器端的数据的长度)