我必须设计一个允许用户制作自定义表单的网站。稍后,此表单将与其他用户共享。
用户(表单的创建者)可以选择" input box
"等元素。 ," check box
"或" date
"每个元素都有一组验证,例如"输入框" ,用户可以选择" alphanumeric
"或" only digits
"或" not empty
"这些验证可能更复杂。
然后表单与其他用户(表单接收者)共享。他们在表格中填写他们的价值观。
用户收到表单应该面对每个字段的相同验证,例如表单所有者设置。
我的挑战是如何动态存储和创建用于验证的JavaScript?
如果它是简单的元素,那么我可以存储完整的HTML并在显示器上呈现它,但是这里的验证就会出现。
关于如何实现此功能的任何想法。
由于
答案 0 :(得分:0)
最简单的方法是定义伪类:
function Validator(args){
this.type = args.type || 'object';
this.max = args.max || null;
this.min = args.min || null;
this.canBeEmpty = args.empty || false;
this.validate = function(input) {
var bool = true; //this is going to be true/false for valid/invalid
if ((typeof(input) != this.type) || (!this.canBeEmpty && input === '')) {
bool = false;
} else {
if (this.type == 'number') {
//test against min/max
}
}
return bool;
}
}
var myFormValidator = new Validator(); //optionally add necessary arguments
var element = document.getElementById(/*input element id*/);
element.addEventListener('change', function() {
var value = element.value; //or text, or whatever is appropriate
var valid = myFormValidator.validate(value);
if (valid) {
//do stuff
} else {
//do other stuff
}
});
如果你的风格比上面的构造函数更多,你可以替换工厂函数或闭包。