我使用的是jquery验证插件。我发现了一个问题,这个问题只会在我部署我的站点时发生,而且即使是这样,它似乎也是间歇性的。当我提交包含无效字段的表单时,它会阻止提交,但所有无效字段都不会显示指示它们无效的消息。如果我将光标放在字段中,然后按tab键离开,则会出现验证消息。截取屏幕似乎还会更新显示,并使消息出现。这个问题出现在多个字段类型上,但这里只有一个作为示例。
<input name="ProjectDescription" class="required" id="ProjectDescription" style="text-transform: uppercase;" type="text" maxLength="15" value=""/>下面是我的validate调用。
$('#RequestForm').validate({
ignore: ":hidden",
ignoreTitle: true,
submitHandler: function () {
var f = $('#RequestForm');
var action = '/Request/Request'
var serializedForm = f.serialize();
$.post(action, serializedForm,
function (rtn) {
$("#Submit").removeAttr('disabled');
if (rtn.Success == true) {
var data = rtn.Result;
$('form')[0].reset();
$.jGrowl("Submitted Successfully", { life: 10000 });
}
else {
$.jGrowl(rtn.ErrorMessage, { sticky: true });
}
});
$("#Submit").attr('disabled', 'disabled');
return false;
},
invalidHandler: function (event, validator) {
debugger
console.log(validator);
}
});和我的按钮处理程序
$('#Submit').click(function () {
$('#RequestForm').submit();
});我不能在小提琴或其他任何地方复制这个问题。在编写此请求的过程中,它再次停止发生,但我没有进行任何代码更改。任何可能导致这种行为的帮助都将不胜感激。我主要在IE9中进行测试
更新:
我一直无法找到任何可靠的方法来复制这个问题,但如果可以的话,我会继续尝试制造一个小提琴。在相同的浏览过程中,它会突然开始工作。通常,通过关闭并重新打开浏览器,我可以让行为再次出现3-4次尝试。基于这些评论,我尝试在场上调用模糊和隐藏/显示。这两种方法都不会导致出现错误消息。按print screen按钮或将光标放在字段中并可靠地按Tab键,都会显示验证消息。有关该解决方案的一些其他信息:
这个页面是由MVC3生成的。我经常使用javascript和ajax来显示/隐藏字段。
字段的显示/隐藏发生在ajax回调中。
此特定字段由显示/隐藏
if (project.PAContractClassID == "CAPITAL") { // capital
$('.capitalOnly').show();
$('.expenseOnly').hide();
}
else if (project.PAContractClassID == "EXPENSE") { // expense
$('.expenseOnly').show();
$('.capitalOnly').hide();
}我在MVC中生成字段的代码
@Html.TextBoxFor(m => m.ProjectDescription, new { @name="ProjectDescription", @class = "required", maxlength = "15", style = "text-transform:uppercase;" }) 发布于 2013-04-04 03:31:37
经过大量测试,我在_Layout.cshtml中隔离了一个对jquery.unobtrusive-ajax的引用,因为它干扰了jquery validate的行为。在删除了对jquery.unobtrusive-ajax的引用之后,我再也没有得到这个错误。我将继续做一些测试,看看我添加这些引用的顺序是否会有所不同,但我不想让这个问题悬而未决。感谢大家的建议。
发布于 2013-03-29 06:00:09
Sparky:如果提交按钮包含在<form></form>中,那么绝对不需要提供一个单击处理函数来提交表单。
如果你使用的不是提交按钮,而是一个type=button,那么试着使用type=submit,看看这个问题是否会消失。
https://stackoverflow.com/questions/15687931
复制相似问题