当“onsubmit”事件调用javascript函数时,asp.net表单未提交

时间:2011-12-22 12:12:33

标签: javascript asp.net javascript-events webforms

情况是:

我希望在提交表单时禁用页面上的所有控件(可能使用重叠的div),这样用户就无法点击其他按钮,直到页面仍在处理回发。所以,我使用表单的“onsubmit”事件调用一个javascript函数来做同样的事情。但是现在正在调用该函数,但表单根本没有发布。我甚至试过,使用“return true;”作为我的JavaScript函数的最后一行,但仍然没有发布表单 这是我的javascript函数:

function DoThis() 
    {
        alert('this form is about to be submitted...');
        return true;
    }

这是我的表格标签:

<form id="form1" runat="server" onsubmit="DoThis();">

这里有什么问题?另外,让我知道是否有其他方式可以达到我的目的???感谢。

编辑:我不是指这里的ajax调用,因为updatepanels已经具有启用此行为的功能。我想要整个页面的这个功能,即使点击更新面板外的按钮导致全回发而不仅仅是ajax调用(因为用户通常有足够的时间点击2或3个按钮,到时候页面获取重定向或重新加载)。

5 个答案:

答案 0 :(得分:4)

请您尝试以下方式:

<form id="form1" runat="server" onsubmit="return DoThis();" >

OR

function DoThis() 
    {
        alert('this form is about to be submitted...');
        this.submit();
    }

答案 1 :(得分:4)

通过一系列的热门试验,我终于发现我错过了在我的表格标签中添加的“return”关键字。所以,我将表单标签修改为:

<form id="form1" runat="server" onsubmit="return DoThis();">

愚蠢的东西吃了很多时间。可能是体验

答案 2 :(得分:0)

这对我有用。

<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <title>Untitled Document</title>

    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>

    <script>

        function testSubmit(form) {
            form.submit();
        }

    </script>

</head>
<body>

    <form action="http://www.yahoo.com" id="myForm" onsubmit="testSubmit(this)" >
    First name: <input type="text" name="firstname" /><br />
    Last name: <input type="text" name="lastname" />
    <input type="submit"  value="Submit" name="submit" />
</form>

   

答案 3 :(得分:0)

当然onsubmit不会与asp.net合作。

我用非常简单的方法解决了它。

如果我们有这样的表格

<form method="post" name="setting-form" >
   <input type="text" id="UserName" name="UserName" value="" 
      placeholder="user name" >
   <input type="password" id="Password" name="password" value="" placeholder="password" >
   <div id="remember" class="checkbox">
    <label>remember me</label>
    <asp:CheckBox ID="RememberMe" runat="server" />
   </div>
   <input type="submit" value="login" id="login-btn"/>
</form>

您现在可以在表单回发之前捕获该事件并将其从回发中停止并使用此jquery执行您想要的所有ajax。

$(document).ready(function () {
            $("#login-btn").click(function (event) {
                event.preventDefault();
                alert("do what ever you want");
            });
 });

答案 4 :(得分:-1)

在'This'函数中添加'this.submit()'

function DoThis() { alert('this form is about to be submitted...'); this.submit(); } 我没有测试过这个。请检查。

您使用的是像JQuery这样的任何js库吗?