我正在寻找一些帮助来解决这个问题。以下摘录是窗体上“保存”按钮的单击处理程序,该窗体具有可变布局,具体取决于要保存的文档类型。使用jquery验证我在自己的自定义对象中设置了不同的规则集,它们都运行得很好。
此应用程序中的文档都与个人记录相关联,并且在我尝试的每个其他人的记录中,文档被保存但在一个案例中,“保存”按钮触发事件,表单验证没有问题并且处理程序返回true。
在Chrome中单步执行时,我可以看到事件对象的默认值为false。没有错误输出到控制台。但是回发不会发生。
几乎不可能指望任何人都可以告诉我这里究竟出了什么问题,但是我在接下来要去哪儿看错了。我已将用于填充表单的存储过程的输出与每个人的ID进行比较,并且可以看到从数据库返回的任何可疑内容。
非常感谢任何帮助。
$(idoc.$.SaveButton).off('click').click(function (e) {
var rv = true;
$('.idoc-msg-bar').html('').hide();
// what kind of document are we saving?
var docType = $(idoc.$.DocTypeDDL).find(':selected').attr('value');
// get the DocumentType object that knows what to validate
var dt = idoc.getDocTypeLayout(docType);
$('form').validate().settings.rules = dt.ValidatorRules;
// debug - dump the rules as the validator sees them
//for (var r in $('form').validate().settings.rules)
// for (var c in $('form').validate().settings.rules[r])
// console.log(r + ' --> ' + c + ' --> ' + $('form').validate().settings.rules[r][c]);
if ($('form').valid()) {
// get confirmation to overwrite CV if need be
if ([idoc.DocType.CVVelosiFormat, idoc.DocType.OriginalCV].indexOf(dt.Value) >= 0) {
$('.idoc-msg-bar').html(idoc.MSG.CVNotes).addClass('required-rel');
var chk = $(idoc.$.ChkOverwriteCV);
if (typeof (chk) != 'undefined') {
if ($(chk).is(":visible")) {
if ($(chk).is(":checked")) {
// proceed to server side validation rules
} else {
$('.idoc-msg-bar').effect('highlight', {}, 3000);
e.preventDefault();
rv = false;
}
}
else {
$('.idoc-msg-bar').show().effect('highlight', {}, 3000);
e.preventDefault();
rv = false;
}
}
}
}
else {
e.preventDefault();
rv = false;
}
return rv;
});
修改
道歉,是的,我的意思也包括html:
<input type="submit" name="ctl00$ContentPlaceHolder1$tabContainer$tabDocs$uctlDocs$btnDocSave" value="Save" onclick="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("ctl00$ContentPlaceHolder1$tabContainer$tabDocs$uctlDocs$btnDocSave", "", true, "", "", false, false))" id="ctl00_ContentPlaceHolder1_tabContainer_tabDocs_uctlDocs_btnDocSave">
修改
因此将人员记录复制回同一个表中,以便它具有不同的ID,然后使用新ID更新所有相关行。我遇到了同样的问题。所以数据中确实有一些东西搞砸了,对吗?
我正在将相关记录恢复为原始ID并重试以查看导致问题的记录。它可能仍然是人物记录中的一列,但我试图避免逐个更新。
答案 0 :(得分:0)
这个字段组以更大的形式显示在选项卡上。其中一个选项卡上的字段使用了一个用户控件,该控件具有切换控件是否具有RequiredFieldValidator的属性。出于某种原因,这被触发了。由于我的文档表单没有使用ASP.NET客户端验证,我只是在文档表单中添加“CausesValidation = false”,问题就消失了。
所以 - 任何有这种奇怪的人 - 检查你的其他控件以进行客户端验证,验证组等,如果你没有使用ASP.NET的客户端验证,请在提交按钮上明确关闭它。可以节省3天和一个新的光头补丁: - )