我正在使用jquery validate插件。我发现只有在部署我的网站后才会出现这个问题,即便如此,它似乎也是断断续续的。当我提交带有无效字段的表单时,它会阻止提交,但没有一个无效字段显示表明它们无效的消息。如果我将光标放在字段中然后标签出现验证消息。屏幕捕获似乎也会更新显示并导致显示消息。问题出现在多个字段类型上,但这里有一个作为示例。
<input name="ProjectDescription" class="required" id="ProjectDescription" style="text-transform: uppercase;" type="text" maxLength="15" value=""/>
这是我的验证电话。
$('#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();
});
我无法在小提琴或其他任何地方复制此问题。在编写此请求的过程中,它再次停止发生,但我没有进行任何代码更改。任何可能导致这种行为的帮助将不胜感激。我主要在IE 9中测试
更新
我一直无法找到任何方法来可靠地复制问题,但如果可以,我会继续尝试创建一个小提琴。在同一个浏览会话期间,它将突然开始工作。通常,我可以通过关闭并重新打开浏览器来让行为再次出现3-4次。根据评论,我试图在场上调用模糊和隐藏/显示。这些都不会导致出现错误消息。按下打印屏幕按钮或将光标放在字段中并可靠地按Tab键会显示验证消息。有关该解决方案的一些其他信息:
该页面由MVC 3生成。 我使用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;" })
答案 0 :(得分:0)
Ditto Sparky:如果你的提交按钮包含在<form></form>
中,那么绝对不需要提供点击处理函数来提交表格。
如果您没有使用提交按钮,而只使用type=button
,请尝试使用type=submit
并查看问题是否消失。
答案 1 :(得分:0)
经过大量测试后,我在我的_Layout.cshtml中隔离了对jquery.unobtrusive-ajax的引用,因为它干扰了jquery validate的行为。删除对jquery.unobtrusive-ajax的引用后,我没有再次收到错误。我将继续进行一些测试,看看我添加这些引用的顺序是否有所不同,但我不想让问题无法回答。谢谢大家的建议。