【问题标题】:jquery datepicker and custom validationjquery datepicker和自定义验证
【发布时间】:2011-01-08 13:39:36
【问题描述】:

我需要添加自定义验证(我认为)来验证来自用户的输入。这是我的用例: 我正在使用 jquery ui datepicker 来选择日期,本地化如下:

$.datepicker.setDefaults( $.datepicker.regional[ currentLocale ] );

我使用 bassistance 验证插件,并使用 date:true 的规则等不适用于不同的格式(或者如果他们这样做,请告诉我怎么做!)。所以我做了我自己的日期验证方法,像这样

   $.validator.addMethod("validDate", function(value) {
        return parseDateString(value) != null;
    }, jQuery.validator.messages.date);

这一切都很好,除了在日期选择器中选择日期时,验证在组件的值更改之前触发!所以我实际上验证了以前的值....

有人可以帮我解决吗? 在此先感谢:)

【问题讨论】:

    标签: jquery-ui validation jquery-validate jquery-ui-datepicker


    【解决方案1】:

    您可以触发验证upon the user closing datepicker 弹出窗口:

    $("#birthdate").datepicker({
        onClose: function() {
            /* Validate a specific element: */
            $("form").validate().element("#birthdate");
        }
    });
    

    使用validateelement() 函数将使您能够立即验证特定字段。

    我创建了一个示例 here,其中任何年份 != 2011 的日期都将触发验证失败。

    【讨论】:

    • 使用此 onClose 方法的另一种方法是验证动态日期选择器。如果页面完成加载,然后添加了一个附加了日期选择器的输入元素,则验证消息将稍微不同步。如果用户尝试在未选择日期的情况下发布消息,则会显示该消息。在这种情况下选择日期后,消息将不会被删除(除非再次选择日期)。 onClose: function(){ $(this).valid();} 将导致消息正确同步。
    • 这个答案对我帮助很大,但我被一个奇怪的问题困住了几天。我有两个带有自定义验证的日期选择器,上面的方法效果很好。然后,我通过一个 JavaScript 函数又添加了两个,并且每隔一次才触发一次验证。环顾四周,我发现了这个 (bugs.jqueryui.com/ticket/7451),因此在我的 onClose 事件中添加(更改为与上面的示例匹配)验证后:$("form #birthdate").trigger("blur");现在它可以工作了。
    猜你喜欢
    • 1970-01-01
    • 2011-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-17
    • 1970-01-01
    • 2014-05-13
    • 2013-03-02
    相关资源
    最近更新 更多