在我的代码中我调用了一个javascript函数onsubmit of a form并在函数内部通过使用formname.fieldname.value对我的字段进行验证,它工作正常但突然它无法显示错误“formname不是定义的”。
提前致谢
答案 0 :(得分:1)
一些可能的原因:
答案 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')
更简单,与窗口,文档或表单对象的成员没有冲突。