简体   繁体   English

单击按钮时阻止表单提交

[英]preventing form submit when button clicked

I have a button within a form. 我在表单中有一个按钮。 The thing is when I click it, it does not execute the server side function. 问题是当我单击它时,它不执行服务器端功能。 Is it possible to prevent form submission, while executing server functions and client side validations ? 在执行服务器功能和客户端验证时,是否可以防止表单提交?

Thanks in advance. 提前致谢。

html (inside a form) html(在表单内)

  <button class="submit" runat="server" id="v4"  onserverclick="v4_Click" >Validate</button>

jquery jQuery的

 $('#v4').click(function (event) {
             if (validation()) {
                 slideToStep(5);
             }
             return false;
         });

c# C#

protected void v4_Click(object sender, System.EventArgs e)
        {
            System.Diagnostics.Debug.Write("test");
        }

I believe you can achieve what you're wanting, by binding the event.preventDefault() to the submit event of the form, rather than the click event of the button. 我相信你能实现你想要什么,通过结合event.preventDefault()submit表单的事件,而不是click按钮的事件。

  1. Setup an onclick for your button to call a function that submits your form. 为您的按钮设置一个onclick ,以调用提交表单的函数。

    <button class="submit" id="v4" onclick="SubmitForm();" runat="server" onserverclick="v4_Click" >Validate</button>

  2. Set the SubmitForm() function to submit the form, then bind a function to your submit event: 设置SubmitForm()函数以提交表单,然后将函数绑定到您的Submit事件:

function SubmitForm() {
    $('#form1').submit();
}

$(function () {
    $('#form1').submit(function (event) {
        if (validation()) {
            slideToStep(5);
        }
        else
        {
            //Validation Failed, prevent form from submitting.
            event.preventDefault();
        }
    });
});

Is it possible to prevent form submission yes it is you can simply write e.preventDefault()/Return false() on jquery click of button Is it possible to prevent form submission是的,您可以在jquery上单击按钮简单地编写e.preventDefault()/Return false()

But again While using server side function i am not getting this 但是再次While using server side function时我没有得到这个

The problem is in your javascript code, in your case return false is always called, instead you should only call it when your validation fails: 问题出在您的javascript代码中,在您的情况下,始终调用return false ,而仅应在验证失败时调用它:

$('#v4').click(function (event) {
     if (validation()) {
         slideToStep(5);
     } else{
         return false;
     }
});

Edit: 编辑:

Basically, if you want to call the button_click event, you need to submit the form, in your case I would use a WebMethod to call a server side validation function with ajax. 基本上,如果要调用button_click事件,则需要提交表单,在这种情况下,我将使用WebMethod来使用ajax调用服务器端验证功能。 Something like this: 像这样:

c#: C#:

[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public static string Validate(string params)
{
    // your validations
    return "Received : " + params;
}

jquery: jQuery的:

$(document).ready(function() {
  $("#v4").click(function() {
     $.ajax({
      type: "POST",
      url: "Default.aspx/Validate",
      data: "{params: 5 }",
      contentType: "application/json; charset=utf-8",
      dataType: "json",
      success: function(msg) {
         alert(msg.d);
      }
});

Alternative: 选择:

You could also use a customValidator, and ASP will do all of the jquery stuff for you. 您还可以使用customValidator,ASP将为您完成所有jquery的工作。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM