Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 3 带有日期选择器的jQuery验证插件-无效日期导致提交时日期选择器弹出_Asp.net Mvc 3_Jquery Ui_Validation - Fatal编程技术网

Asp.net mvc 3 带有日期选择器的jQuery验证插件-无效日期导致提交时日期选择器弹出

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

我有一个简单的MVC3表单,它有一个日期字段并启用了客户端验证(jquery.validate/jquery.validate.unobtrusive)。我添加了代码,根据文档将日期选择器(jqueryui)附加到日期字段。但是,如果日期选择器是我在单击“提交”按钮之前单击的最后一个对象,并且日期字段无效,则会导致该字段的日期选择器自动显示。我不要这个。如何禁用

编辑:

查看验证插件的代码后,它似乎试图使用下面的focusInvalid()函数手动关注最后一个活动的输入控件:

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将不会自动显示