使用jquery(插件)验证表单时出现问题
该插件似乎工作正常。如果我将两个字段留空,我会得到通知,它们是必需的,并且必须是有效的数字 我遇到的问题是,如果我用正确的数据填充两个文本字段,然后点击add按钮,那么我在下面的代码中遇到了错误。数据仍然会被发送到我的控制器并执行我的添加,但警报会从我的错误部分触发使用jquery(插件)验证表单时出现问题,jquery,jquery-validate,validation,Jquery,Jquery Validate,Validation,该插件似乎工作正常。如果我将两个字段留空,我会得到通知,它们是必需的,并且必须是有效的数字 我遇到的问题是,如果我用正确的数据填充两个文本字段,然后点击add按钮,那么我在下面的代码中遇到了错误。数据仍然会被发送到我的控制器并执行我的添加,但警报会从我的错误部分触发 $(document).ready(function (e) { $("#frmOverride").validate({ rules: {
$(document).ready(function (e) {
$("#frmOverride").validate({
rules: {
maintenancePercentage: {
required: true,
number: true
},
officePercentage: {
required: true,
number: true
}
}
});
}
此部分位于“我的保存”按钮的单击事件中:
var seg1 = dataItem.Seg1_Code;
var maintPercentage = $("#maintenancePercentage").val();
var officePercentage = $("#officePercentage").val();
if ($('#frmOverride').validate().form()) {
$.ajax({
type: "POST",
url: "/PayrollMarkup/AddPayrollMarkupOverride",
data: {
seg1: seg1,
maintenancePercentage: maintPercentage,
officePercentage: officePercentage
},
success: function (data) {
//console.log(data);
var window = $("#window").data("kendoWindow");
$('#window_wnd_title').text("");
window.close();
$("#maintenancePercentage").val('');
$("#officePercentage").val('');
readDefaultsGrid();
readNotDefaultsGrid();
},
error: function (e) {
console.log(e);
alert("There was an error setting custom values. Maintenance % and Office % are required.");
}
});
}
您需要清理您的代码,您的代码正在搜索相同的标记4次(!) 不要重复$('#PayrollMarkupDefaultsGrid')。数据(“kendoGrid”)四次,而是将其存储在变量中,并通过该变量使用其方法和成员 至于你的问题,我相信你的剑道对象还没有初始化,当你已经尝试使用它。我相信您的代码在这里引发了异常:
$('#PayrollMarkupDefaultsGrid').data("kendoGrid").dataSource.read();
因为标记不存在或未初始化为剑道对象,或者剑道对象没有公共数据源成员,或者数据源成员没有read()函数。请检查这些并让我知道您的结果。没有必要这样做
if ($('#frmOverride').validate().form()) {
$.ajax({ ...
当然,您不希望在click
事件处理程序中执行这些操作。这是因为jqueryvalidate插件已经捕获了点击事件,检查了有效的表单,并提供了一个submitHandler
回调函数,该函数完全用于通过ajax
提交
,
submitHandler,回调,默认:默认(本机)表单提交
回调,用于在表单提交时处理实际提交
这是有效的。获取窗体作为唯一参数。替换默认值
提交提交表单后通过Ajax提交表单的正确位置
已验证
简单演示:我按照您的建议对代码进行了一些清理(谢谢),但我在控制台中没有看到任何错误。谢谢。我略读了一下文档以加快速度。@Mithrilhall,没问题,这可能是最常见的错误。如果我需要用我自己的自定义消息更改错误消息,该怎么办?@bhuvan,这是离题的,因此我建议您参考中的消息选项。否则,请随意发布新问题。不过,请。
$(document).ready(function () {
$("#frmOverride").validate({
rules: {
maintenancePercentage: {
required: true,
number: true
},
officePercentage: {
required: true,
number: true
}
},
submitHandler: function (form) {
// your ajax goes here
return false; // to block page redirect since you're using ajax
}
});
});