我正在创建一个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的长度到最小长度。现在它有效:)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top