javascript - 如何使用对象初始值设定项来验证表单?

标签 javascript

我正在使用下面的代码执行基本的表单验证,并希望使用对象初始化器实现相同的结果。我正在寻找其他编码表单验证的方法。我不确定使用对象而不是数组是否有额外的优势。缺乏知识是因为我是 javascript 世界的新手。

代码

var formID = document.forms["webform"];
function validateForm() {
        var formFields = ["salutations", "fname", "lname"];
        var formLabel = ["Salutations", "First Name", "Last Name"];

        for(var i = 0; i < formFields.length; i = i + 1) {
            if (formID[formFields[i]].value.length == 0) {
                window.alert("The field " + formLabel[i] + " is empty");
                return false;
            }
        }

    }

最佳答案

OO 在这方面可能有点矫枉过正。可以通过将 formFieldsformLabels 传递到 validateForm 来实现重用:

function validateForm(form, fields, labels) {
    for(var i = 0, l=fields.length; i < l; i++) {
        if (form[fields[i]].value.length === 0) {
            alert("The field " + labels[i] + " is empty");
            return false;
        }
    }
}

您还可以将所有需要的变量作为对象传递:

function alternateValidateForm(options) {
    var form = options.form,
        fields = options.fields,
        labels = options.labels;
    // The remainder of the code is the same
}

但是,如果您想要/需要一个 OO 模式,那么只需创建一个构造函数:

function Validator(fields, labels) {
     this.fields = fields;
     this.labels = labels;
}

Validator.prototype.validate = function(form) {
    // Same dance as before
}

然后可以这样使用:

var validator = new Validator(["salutations", "fname", "lname"],
                              ["Salutations", "First Name", "Last Name"]);
var form = document.getElementById("webform");
validator.validate(form);

关于javascript - 如何使用对象初始值设定项来验证表单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11788754/

相关文章:

javascript - 为什么我在 ReactJs 中得到的表大小是其大小的 4 倍?

javascript - 如何让toggle() 方法停止重复? jQuery

javascript - 在 Chrome 中最大化弹出窗口

javascript - Angularjs - 将服务代码移动到另一个文件

javascript - 我如何获取 HTML 标签内的值并将其绑定(bind)到 aurelia 中的 ts(组件文件)

javascript - 如何使用jquery在双击时传递属性值

javascript - 如何阻止 "tel:number"链接在桌面/平板电脑上工作

javascript - Babel : SyntaxError: test. jsx:意外 token (3:11)

javascript - 创建新记录后重置 Lightning-record-form

javascript - 我可以用 bluebird Promises 提前打破链条吗?