Javascript 通过将表单名称作为构造函数传递来验证表单
我试图通过将表单节点传递给构造函数来验证表单。我知道使用OO有点过分,但这是一个要求。我有下面的代码,但是当我试图警告函数(表单)中文本框的值时,它们被认为是未定义的Javascript 通过将表单名称作为构造函数传递来验证表单,javascript,forms,oop,validation,Javascript,Forms,Oop,Validation,我试图通过将表单节点传递给构造函数来验证表单。我知道使用OO有点过分,但这是一个要求。我有下面的代码,但是当我试图警告函数(表单)中文本框的值时,它们被认为是未定义的 <SCRIPT LANGUAGE="JavaScript"> function Validator(fields) { this.fields = fields; } Validator.prototype.validate = function (form) {
<SCRIPT LANGUAGE="JavaScript">
function Validator(fields) {
this.fields = fields;
}
Validator.prototype.validate = function (form) {
for (var i = 0, l = this.fields.length; i < l; i++) {
alert(this.fields[i].value);
if (this.fields[i].value == 0) {
alert("The field is empty");
return false;
}
}
}
var validator = new Validator(["username", "password"]);
function runValidate(form) {
validator.validate(form);
}
</SCRIPT>
</head>
<body>
<form NAME="AbbeyRoad">
<fieldset>
<legend>Please login</legend>
<div class="form-element">
<label for="username"><span class="shortkey">U</span>sername:</label>
<input type="text" name="username" id="username" accesskey="u">
</div>
<div class="form-element">
<label for="password"><span class="shortkey">P</span>assword:</label>
<input type="password" name="password" id="password" accesskey="p">
</div>
<input type="button" name="login" value="Login" id="login" onClick="runValidate(this.form)">
</fieldset>
</form>
函数验证器(字段){
this.fields=字段;
}
Validator.prototype.validate=函数(表单){
for(var i=0,l=this.fields.length;i
更改:
alert(this.fields[i].value);
致:
这是:
if (this.fields[i].value == 0) {
致:
非常感谢。成功了。顺便问一下,看看代码,我应该做些什么改进吗?显然,在没有OO的情况下这样做更好,但我想知道我是否需要在这里使用原型?您的代码编写得很好,我认为在这里使用原型没有任何害处。我想说的是记住函数本身就是对象,任何类型的对象在实例化性能方面都特别昂贵,但对于较小的应用程序,清晰性可能更有用。
if (this.fields[i].value == 0) {
if (form[this.fields[i]].value == 0) {