JavaScript:每次调用属性时,将函数分配给重新运行的属性
-
12-11-2019 - |
题
我正在创建一个html5 js表单库。这个想法是将一个类的.form-Item转变为内容可编辑div,使用元素的数据属性作为应该创建的表单项,验证等类型的指令。
下面的代码为单个表单项创建验证对象,该对象检查是否满足字段值的最小长度。对象的属性包括它适用于(el)的DOM元素,如果未满足该最小长度,则应显示字段的最小长度(minlen),以及返回的函数(提交)如果对象是否验证,如果没有,则显示错误消息。 但是,提交属性函数始终返回false。我很确定我知道为什么,但我不确定纠正它的最佳方式。我相信我遇到的问题与关闭的概念有关。提交属性会检查表单项元素的innerhtml的长度,并将其与Minlen属性进行比较。但是,当InnerHTML.Length始终为0时,我认为这只发生在验证对象的实例的那一刻(因为表单项和验证对象,必须在用户进入字段中的任何内容之前创建)。我应该如何修改以下代码,以便随时调用提交属性函数重新运行(从而检查该字段的内踝的当前长度,而不是实例化时的长度)?
function formValidateMinLen(item){
var minLen = item.attr('data-minLen');
this.el = item;
this.minLen = minLen;
this.msgError = item.attr('data-error_minLen');
this.submit = function(){
if(this.el.html() >= this.minLen){
return true;
}else{
this.el.after('<div class="msgError">' + this.msgError + '</div>');
return false;
}
}
}
item = new formValidateMinLen($('#registration-form .form-item:first'));
.
我已经提出一个解决方案,它是将表单项元素的innerhtml传递为提交属性函数的参数,如下所示:
this.submit = function(html){
if(html >= this.minLen){
...
}
item = new formValidateMinLen($('#registration-form .form-item:first'));
item.submit($('#registration-form .form-item:first').html());
.
但是,我不喜欢那个解决方案,因为它似乎必须在项目中重新指定DOM元素.Submit代码(因为该对象已包含其EL属性中的DOM元素)。
所以...我该怎么办?
解决方案
我是个白痴。我正在将innerhtml与最小长度进行比较,而不是innerhtml的长度到最小长度。现在它有效:)
不隶属于 StackOverflow