阻止内部表单提交但提交外部表单

时间:2015-06-09 23:53:35

标签: javascript html forms

我使用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;在微软搞砸了之前。

0 个答案:

没有答案