Asp.net mvc 3 带有日期选择器的jQuery验证插件-无效日期导致提交时日期选择器弹出
我有一个简单的MVC3表单,它有一个日期字段并启用了客户端验证(jquery.validate/jquery.validate.unobtrusive)。我添加了代码,根据文档将日期选择器(jqueryui)附加到日期字段。但是,如果日期选择器是我在单击“提交”按钮之前单击的最后一个对象,并且日期字段无效,则会导致该字段的日期选择器自动显示。我不要这个。如何禁用 编辑: 查看验证插件的代码后,它似乎试图使用下面的focusInvalid()函数手动关注最后一个活动的输入控件:Asp.net mvc 3 带有日期选择器的jQuery验证插件-无效日期导致提交时日期选择器弹出,asp.net-mvc-3,jquery-ui,validation,Asp.net Mvc 3,Jquery Ui,Validation,我有一个简单的MVC3表单,它有一个日期字段并启用了客户端验证(jquery.validate/jquery.validate.unobtrusive)。我添加了代码,根据文档将日期选择器(jqueryui)附加到日期字段。但是,如果日期选择器是我在单击“提交”按钮之前单击的最后一个对象,并且日期字段无效,则会导致该字段的日期选择器自动显示。我不要这个。如何禁用 编辑: 查看验证插件的代码后,它似乎试图使用下面的focusInvalid()函数手动关注最后一个活动的输入控件: focusInva
focusInvalid: function() {
if( this.settings.focusInvalid ) {
try {
$(this.findLastActive() || this.errorList.length && this.errorList[0].element || [])
.filter(":visible")
.focus()
// manually trigger focusin event; without it, focusin handler isn't called, findLastActive won't have anything to find
.trigger("focusin");
} catch(e) {
// ignore IE throwing errors when focusing hidden elements
}
}
},
处理这个问题似乎有两种选择。一种是将验证器本身的focusInvalid设置设置为false。我选择使用monkey补丁focusInvalid函数,因为它允许我关注表单中的第一个无效元素,而不一定是最后一个活动元素
$('form').data('validator').focusInvalid = function () {
$(this.currentForm).find('.input-validation-error').first().focus();
};
不过,我很想听听解决此问题的其他方法。如果您的情况可以接受,您可以使用以下日期选择器选项,仅使用按钮显示日期选择器:
showOn: 'button', showButtonPanel: true, buttonImage: '<your image file>',
buttonImageOnly: true,
buttonText: 'Choose a Date',
shown:'button',shownbuttonpanel:true,buttonImage:',
buttonImageOnly:正确,
buttonText:“选择日期”,
如果您这样做,在提交表单时验证失败的情况下,datepicker将不会自动显示