代码之家  ›  专栏  ›  技术社区  ›  BennyM

使用运行时控件进行jQuery验证

  •  0
  • BennyM  · 技术社区  · 14 年前

    我有两个日期选择器,用户在其中进行选择。然后在选定的时间间隔中为每一天添加一个输入文本框。我正在努力让jQuery Validate插件为生成的文本框工作。似乎只有第一个被验证了。

    加载页面时,我添加了一个自定义验证方法,并将表单设置为验证:

    $(document).ready(function() {
    $.validator.addMethod("validHoursInDay", function(value, element) {
        if (this.optional(element)) {
            return this.optional(element);
        }
        var regex = /\d((\.|,)\d)?/;
        var isDecimalNumber = regex.test(value);
        if (isDecimalNumber) {
            var parsedNumber = parseFloat(value.replace(",", "."))
            return parsedNumber >= 0 && parsedNumber <= 24;
        }
        else {
            return false;
        }
    });
     $("#aspnetForm").validate({
        debug: true,
        onfocusout: false,
        submitHandler: function(form) {
            submitabscence();
        },
        invalidHandler: function(form, validator) {
            var errors = validator.numberOfInvalids();
            if (errors) {
                var message = 'Got some erros for you';
                $.each(validator.errorList, function(index, value) {
                    value.element.style.borderColor = 'red';
                });
                ShowErrorBox(message);
            }
        }
    
    });
    });
    

    $("#week-overview :input").each(function() {
    
        $(this).rules("add", {
            validHoursInDay : true,
            required: true,
            messages: {
                required: "Fill in a number",
                validHoursInDay: "Valid Hours in Day"
            }
        });
    });
    

    似乎只有第一个文本框被验证。

    1 回复  |  直到 14 年前
        1
  •  0
  •   BennyM    14 年前

    jQuery validate插件似乎需要为每个已验证的输入指定一个唯一的名称。当执行此验证时,它会正常工作。