为什么在提取到方法时验证失败?

时间:2013-12-21 02:03:01

标签: javascript jquery

我正在用js编写验证函数。 当我将逻辑提取到私有方法时,我的验证失败了。我找不到原因。

我的html定义是:

<input type="text" id="searchQuery" data-minlenght="3">

此代码应包含任何元素的所有验证逻辑。

我使用以下行访问所有信息:

  var query = jQuery("#searchQuery");
  cpodesign.Validation.isValid(query, query.val());

现在我的验证实现是

cpodesign.Validation = (function () {
            var Settings = {
                MinLenght: 'minlength',
            };

            //Private members

            function validateLenght(element, value) {
                var len = element.data(Settings.MinLenght);
                return (value.length > len);
            }

            return {
                // public members
                isValid: function (element, value) {
                    var marginRight = element.data(Settings.MinLenght);
                    if (marginRight !== 'undefined') {
                        return validateLenght(element, value); // does not work
                    }  

                    console.error('Validation type not defined');
                    return true;
                },
            };
        })();

这个实现有效,但我不知道如何做第一个工作,正如我所希望的那样。

 cpodesign.Validation = (function () {

            return {
                // public members
                isValid: function (element, value) {
                    var marginRight = element.data("minlenght");
                    if (marginRight !== 'undefined') {
                        return value.length > marginRight;
                    }

                    console.error('Validation type not defined');
                    return true;
                },
            };
        })();

2 个答案:

答案 0 :(得分:1)

你的html中输入了一个拼写错误。应该是:

  

<input type="text" id="searchQuery" data-minlength="3">

instaid of:

  

<input type="text" id="searchQuery" data-minlenght="3">

错字:data-minlenght

答案 1 :(得分:0)

你会在IE中遇到这个悬挂的chad dangler

的问题
        var Settings = {
            MinLength: 'minlength',
        };

应该是:

        var Settings = {
            MinLength: 'minlength'
        };

注意:我还纠正了“MinLength”的拼写