javascript表单验证突然停止工作

时间:2009-08-27 13:42:33

标签: javascript

在我的代码中我调用了一个javascript函数onsubmit of a form并在函数内部通过使用formname.fieldname.value对我的字段进行验证,它工作正常但突然它无法显示错误“formname不是定义的”。

提前致谢

3 个答案:

答案 0 :(得分:1)

一些可能的原因:

  • 您在该页面上添加了另一个具有相同名称的对象
  • 您更改了表单的名称
  • 表单标记
  • 上不再存在name属性

答案 1 :(得分:1)

如果你可以发布你的代码,那会有所帮助,但我想我知道到底发生了什么。在onsubmit函数内部,它没有正确的变量范围。我通常通过将<form>的引用传递给函数来解决这个问题,这非常简单。

<form onsubmit="return doValidation(this);">

然后你的javascript:

function doValidation(form) {

    form.fieldOne.value = ... // etc

};

另一种方式是绝对引用它

<form name="myForm">


function doValidation() {
    var form = document.myForm;
    form.fieldOne.value = ... // etc
}

答案 2 :(得分:0)

“formname.fieldname.value”是一个从未在任何地方工作的IE黑客。不要使用它。表单不应该被注册为全局变量(窗口。成员),并且存在许多兼容性问题,这可能导致脚本在某些情况下“停止”工作。

假设:

<form name="foo" method="get" action="/"> ...
<input name="bar" type="text" value="" />

使用旧式DOM Level 0 HTML方法访问输入的正确方法是:

document.forms.foo.elements.bar

通过使用'document.forms'数组而不是全局'window'(一个有很多并且不断增加的对象),它可以在浏览器中使用史前Netscape 2并且发起名称冲突的可能性要小得多。你可能不小心选择名字的成员。)

但是现在最简单的方法是使用ID和DOM Level 1 Core的getElementById方法:

<form method="get" action="/"> ...
<input name="bar" type="text" value="" id="field-bar" />

document.getElementById('field-bar')

更简单,与窗口,文档或表单对象的成员没有冲突。