JavaScript: присвоение функции к свойству, которая запускается заново каждый раз, когда свойство называется

StackOverflow https://stackoverflow.com/questions/4979054

Вопрос

Я создаю библиотеку формы HTML5 JS. Идея состоит в том, чтобы повернуть элементы с классом элемента. ФОРМА в редактируемые элементы, используя атрибуты данных элементов в качестве инструкции по типу элемента формы, проверки и т. Д.

Подведенный ниже код создает объект проверки для одного элемента формы, который проверяет, выполняется ли минимальная длина поля поля. Свойства объекта включают элемент DOM. Независимо от того, проверяет ли объект, отображающий сообщение об ошибке, если это не так.

Тем не менее, функция свойства отправки всегда возвращает false. Я уверен, что знаю, почему, но я не уверен в лучшем способе исправить это. Я считаю, что проблема, в которую я бегу в том, чтобы связаться с понятием закрытия. Свойство отправки проверяет длину innerhtml элемента формы элемента и сравнивает его с свойством Minlen. Но я думаю, что это происходит только в момент создания объекта проверки, когда innerhtml.length всегда составляет 0 (поскольку элемент формы и объект проверки должен быть создан до того, как пользователь может ввести что-либо в поле ). Как я должен изменить код ниже, чтобы функцию «Отправить свойство» выполняется заново в любое время, которое она называется (тем самым, проверяя текущую длину innerhtml поля, а не длины в момент мгновенности)?

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 в Item.submit Code (поскольку объект уже содержит этот элемент DOM в своем свойстве EL).

Так ... что мне делать?

Это было полезно?

Решение

Я идиот.Я сравнил innerhtml до минимальной длины, а не длиной innerhtml до минимальной длины.Теперь это работает :)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top