2011-01-08 125 views
4

我需要添加自定义验证(我认为)验证来自用户的输入。这是我的使用情况: 我使用jQuery UI的日期选择器选择日期,本地化是这样的:jquery datepicker和自定义验证

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

我使用bassistance验证插件,以及使用规则date:true和这种不工作不同的格式(或者如果他们确实请告诉我怎么做!)。所以,我做了我自己的日期验证方法,这样

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

这所有的作品很好选择在验证了的及部件前值触发的日期选择日期时,除了事实被改变!所以我实际上验证了以前的值....

有没有人有我的解决方案? 感谢提前:)

回答

8

你可以触发验证upon the user closingdatepicker弹出:

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

使用validateelement()功能将使您立刻验证一个特定的领域。

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

+0

另一种使用onClose方法的方法是验证动态日期选择器。如果页面完成加载,然后添加一个输入元素并添加了日期选择器,则验证消息将稍微不同步。如果用户尝试发帖而未选择日期,则显示该消息。在此场景中选择日期后,该消息将不会被删除(除非第二次选择该日期)。 `onClose:function(){$(this).valid();}`将使消息正确同步。 – 2012-07-10 19:18:59