代码之家  ›  专栏  ›  技术社区  ›  Vivian River

如何在单击事件的“提交”按钮中取消表单提交?

  •  93
  • Vivian River  · 技术社区  · 14 年前

    我正在开发一个ASP.net web应用程序。

    我有一张带提交按钮的表格。submit按钮的代码如下 <input type='submit' value='submit request' onclick='btnClick();'> .

    我想写如下:

    function btnClick() {
        if (!validData())
            cancelFormSubmission();
    }
    

    我该怎么做?

    12 回复  |  直到 14 年前
        1
  •  177
  •   Saminda Peramuna    7 年前

    你最好。。。

    <form onsubmit="return isValidForm()" />
    

    如果 isValidForm() 回报 false ,则您的表单不会提交。

    您可能还应该将事件处理程序从内联移动。

    document.getElementById('my-form').onsubmit = function() {
        return isValidForm();
    };
    
        2
  •  42
  •   mikefrey    14 年前

    将输入更改为:

    <input type='submit' value='submit request' onclick='return btnClick();'>
    

    在函数中返回false

    function btnClick() {
        if (!validData())
            return false;
    }
    
        3
  •  13
  •   Quentin    14 年前

    你需要改变

    onclick='btnClick();'
    

    onclick='return btnClick();'
    

    cancelFormSubmission();
    

    return false;
    

    也就是说,我会尽量避免内在的事件属性 unobtrusive JS 有一个库(如YUI或jQuery),它有一个很好的事件处理API,并绑定到真正重要的事件(即表单的submit事件而不是按钮的click事件)。

        4
  •  6
  •   Shady Mohamed Sherif    9 年前

    有时 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");
                });
     });
    
        5
  •  5
  •   devrys    12 年前

    你应该把类型从 submit button :

    <input type='button' value='submit request'>
    

    而不是

    <input type='submit' value='submit request'>
    

    然后在javascript中获取按钮的名称,并将想要执行的任何操作关联起来

    var btn = document.forms["frm_name"].elements["btn_name"];
    btn.onclick = function(){...};
    

    为我工作 希望有帮助。

        6
  •  4
  •   SLaks    14 年前

    你需要 return false; :

    <input type='submit' value='submit request' onclick='return btnClick();' />
    
    function btnClick() {
        return validData();
    }
    
        7
  •  1
  •   George Johnston    14 年前

    为什么不将submit按钮更改为常规按钮,在click事件中,如果表单通过了验证测试,则提交表单?

    例如

    <input type='button' value='submit request' onclick='btnClick();'>
    
    function btnClick() { 
        if (validData()) 
            document.myform.submit();
    } 
    
        8
  •  1
  •   Cfreak    14 年前

    你需要 onSubmit . 不是 onClick 否则有人只需按回车键,它将绕过您的验证。至于取消。你需要返回false。代码如下:

    <form onSubmit="return btnClick()">
    <input type='submit' value='submit request'>
    
    function btnClick() {
        if (!validData()) return false;
    }
    

    编辑 onSubmit属于表单标记。

        9
  •  1
  •   omar-ali    12 年前

    很简单,只要返回false;

    下面的代码位于使用jquery提交按钮的onclick中。。

    if(conditionsNotmet)
    {
    return false;
    }
    
        10
  •  0
  •   Adam    14 年前

    使用 onclick='return btnClick();'

    function btnClick() {
        return validData();
    }
    
        11
  •  0
  •   mbeckish    14 年前
    function btnClick() {
        return validData();
    }
    
        12
  •  0
  •   ggorlen Hoàng Huy Khánh    7 年前
    <input type='button' onclick='buttonClick()' />
    
    <script>
    function buttonClick(){
        //Validate Here
        document.getElementsByTagName('form')[0].submit();
    }
    </script>