Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/457.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 通过将表单名称作为构造函数传递来验证表单_Javascript_Forms_Oop_Validation - Fatal编程技术网

Javascript 通过将表单名称作为构造函数传递来验证表单

Javascript 通过将表单名称作为构造函数传递来验证表单,javascript,forms,oop,validation,Javascript,Forms,Oop,Validation,我试图通过将表单节点传递给构造函数来验证表单。我知道使用OO有点过分,但这是一个要求。我有下面的代码,但是当我试图警告函数(表单)中文本框的值时,它们被认为是未定义的 <SCRIPT LANGUAGE="JavaScript"> function Validator(fields) { this.fields = fields; } Validator.prototype.validate = function (form) {

我试图通过将表单节点传递给构造函数来验证表单。我知道使用OO有点过分,但这是一个要求。我有下面的代码,但是当我试图警告函数(表单)中文本框的值时,它们被认为是未定义的

<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) {