Bootstrap datepicker和bootstrapvalidation器

我从这里使用bootstrap datepicker和从这里使用bootstrapvalidation器。 我也在使用bootstrap v3.1.1。

从datepicker中选择日期后,validation器不会做出反应。 它只在我使用键盘输入日期时工作。

这是我的HTML代码:

在.js文件中我添加了:

 $(document).ready(function () { $('.datepicker').datepicker(); )}; 

和validation人:

 $(document).ready(function () { $('#myForm').bootstrapValidator({ feedbackIcons: { valid: 'glyphicon glyphicon-ok', invalid: 'glyphicon glyphicon-remove', validating: 'glyphicon glyphicon-refresh' }, fields: { endDate: { validators: { date: { format: 'DD/MM/YYYY', message: 'The format is dd/mm/yyyy' }, notEmpty: { message: 'The field can not be empty' } } } } }); }); 

将BootstrapValidator与Bootstrap-datetimepicker或Bootstrap-datepicker一起使用时,应重新validation日期字段。

所以你应该添加这个:

1)使用bootstrap-datetimepicker:

 $('.date') .on('dp.change dp.show', function(e) { // Revalidate the date when user change it $('#myForm').bootstrapValidator('revalidateField', 'endDate'); }); 

2)使用bootstrap-datepicker:

 $('.datepicker') .on('changeDate show', function(e) { // Revalidate the date when user change it $('#myForm').bootstrapValidator('revalidateField', 'endDate'); }); 

有关更多信息,请参阅datetimepicker示例 。

不知何故,在选择日期后,datepicker()失去了日期字段的焦点,并且没有任何validation器插件可以将日期输入字段视为已填充(有效)。 作为结论,一个简单的.focus()可以解决问题。

 $('#datefield').datepicker({ //datepicker methods and settings here }).on('changeDate', function (e) { $(this).focus(); }); 

以上接受的答案对我不起作用。 对我有用的很简单。

 $('#datefield').datepicker().on('changeDate', function (e) { $('#datefield').focus(); $('#anyotherfield').focus(); $('#datefield').focus(); }); 

希望这可以帮助!

对于大多数情况,上面的答案应该有效,但如果最终任何答案对你不起作用,也可以尝试这样做:

 $('.datepicker').change(function () { $(this).focus(); $(this).blur(); }); 

此脚本中的主要思想是通过“设置”强制validation并在“取消设置”焦点之后强制validation。 我理解这类似于模拟允许运行validation的正常事件。

祝好运!