我使用ASP.Net(不是我的第一选择),因此所有服务器端控件都在主模板的<form id='frmMain'>
表单中。
在插入该模板的代码中,我有一个<asp:UpdatePanel>
,其中有一些<input type='reset' />
元素只需要重置某些值,所以我在内部有这些值<form>
代码。
当其中一个内部表单提交时,它会检查其有效性,然后执行默认的GET,外部表单永远不会有机会执行它的操作。为了保持验证,我想:
function doSubmit(e) {
if (this.checkValidity()) {
e.preventDefault();
frmMain.submit();
}
// don't preventDefault here because validation is taking place with
// nice UI
}
$(function () {
$('form:not(#frmMain)').on('submit', doSubmit);
});
不幸的是,触发frmMain
提交并不能与UpdatePanel
一起使用,并且整个页面都会打包而不是执行异步跳汰。
所以我删除了submit()
的手动调用,并希望单击该按钮会导致两个事件,每个表单一个,但事实并非如此。如果我拨打preventDefault()
,外部表格永远不会看到该事件。如果我不打电话给preventDefault()
内部表格提交,那么外部表格可以做任何事情。
有解决方法吗?
是的,我可以将重置输入更改为按钮,并使用javascript重置我需要的值,无需内部表单,但我是纯粹主义者,并希望看看是否可以完成&#34;它的意思是&#34;在微软搞砸了之前。