Javascript 防止内部表单提交,但提交外部表单

Javascript 防止内部表单提交,但提交外部表单,javascript,html,forms,Javascript,Html,Forms,我使用的是ASP.Net(不是我的首选),因此所有服务器端控件都位于主模板的表单中 在插入到模板中的代码中,我有一个,其中有一些元素只需要重置某些值,所以我在内部标记中有这些值 当其中一个内部表单提交时,它会检查其有效性,然后执行其默认GET,而外部表单永远没有机会执行它的操作。为了保持验证,我想: function doSubmit(e) { if (this.checkValidity()) { e.preventDefault(); frmMain.

我使用的是ASP.Net(不是我的首选),因此所有服务器端控件都位于主模板的
表单中

在插入到模板中的代码中,我有一个
,其中有一些
元素只需要重置某些值,所以我在内部
标记中有这些值

当其中一个内部表单提交时,它会检查其有效性,然后执行其默认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
的submit不能与
UpdatePanel
s一起工作,整个页面的posts-pack不能执行异步jig

因此,我删除了手动调用
submit()
,并希望单击按钮会导致两个事件,每个表单一个,但事实并非如此。如果我调用
preventDefault()
外部窗体将不会看到该事件。如果我不调用
preventDefault()
内部表单在外部表单执行任何操作之前提交

有办法解决这个问题吗


是的,我可以将重置输入更改为按钮,并使用javascript只重置我需要的值,从而消除对内部表单的需求,但我是一个纯粹主义者,我想看看是否可以在微软把事情搞砸之前按“它的本意”来做。

在表单中包含表单是无效的HTML。客户端上的结果将是非标准错误更正的结果。将“内部”形式移至“外部”形式之外,而不是使用“内部”形式,考虑使用元素来对不同的元素进行分组并重置它们。您也可以只使用类值来选择它们。