gpt4 book ai didi

JavaScript 面向对象问题

转载 作者:行者123 更新时间:2023-11-30 23:53:44 24 4
gpt4 key购买 nike

所以我想用 JavaScript 构建一个表单验证类/对象。我认为它的工作方式是这样的:

var form=new Validation(); 
form.addField("name","Your name","required");
form.addField("email","Email Address","is_email");
.........
form.validate();

我在想 validation 类会被定义成这样?

validation
{
var fields=new Array();
var labels=new Array();
var rules=new Array();
var count=0;

function addField(field,label,rule)
{
this.fields[count]=field;
this.labels[count]=label;
this.rules[count]=rule;
this.count=count+1;
}

function validate()
{
var valid;
for (x=0; x< count; x++)
{
valid=false;
switch (this.rules[x])
{
case 'required':
valid=this.validate_required(this.fields[x]);
break;

case 'email':
valid=this.validate_email(this.fields[x]);
break;
}

if (! valid)
this.addError(this.fields[x],this.rules[x],this.labels[x]);
}

if (this.hasErrors())
return false;
else
return true;
}

..........
}

我知道这可能是不可能的,因为现在是不可能的。我的问题是,我该怎么做才能使第一个代码块(创建 Validation 的新实例并向其添加规则)起作用?

提前致谢。

最佳答案

你只是缺少一些 OO 符号。标有 "//***" 注释的行是我从您的原始代码示例中更改的行:

function Validation() // ***
{
var fields=new Array();
var labels=new Array();
var rules=new Array();
var count=0;

this.addField = function (field,label,rule) // ***
{
fields[count]=field; // ***
labels[count]=label; // ***
rules[count]=rule; // ***
count=count+1;
}

this.validate = function () // ***
{
var valid;
for (x=0; x< count; x++)
{
valid=false;
switch (rules[x]) // ***
{
case 'required':
valid=this.validate_required(fields[x]); // ***
break;

case 'email':
valid=this.validate_email(fields[x]); // ***
break;
}

if (! valid)
this.addError(fields[x],rules[x],labels[x]); // ***
}

if (this.hasErrors())
return false;
else
return true;
}
}

哦,我没有看到 validate_required()validate_email()addError() 也没有看到 hasErrors()。可能想添加那些。

关于JavaScript 面向对象问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/575191/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com