0

我在表单中有一个按钮。问题是当我单击它时,它不会执行服务器端功能。是否可以在执行服务器功能和客户端验证时阻止表单提交?

提前致谢。

html(在表单内)

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

jQuery

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

C#

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

3 回答 3

1

event.preventDefault()我相信您可以通过将 绑定到submit表单的事件而不是click按钮的事件来实现您想要的。

  1. 为您的按钮设置一个onclick以调用提交表单的函数。

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

  2. 设置SubmitForm()提交表单的函数,然后将函数绑定到您的提交事件:

函数提交表单(){
    $('#form1').submit();
}

$(函数(){
    $('#form1').submit(function (event) {
        如果(验证()){
            滑动到步骤(5);
        }
        别的
        {
            //验证失败,阻止表单提交。
            event.preventDefault();
        }
    });
});
于 2013-10-09T15:57:11.190 回答
1

Is it possible to prevent form submission是的,你可以简单地e.preventDefault()/Return false()在 jquery 点击按钮上写

While using server side function我又没有得到这个

于 2013-10-09T15:59:51.517 回答
0

问题出在你的javascript代码中,在你的情况下return false总是被调用,而不是你应该只在验证失败时调用它:

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

编辑:

基本上,如果你想调用 button_click 事件,你需要提交表单,在你的情况下,我会使用WebMethodajax 调用服务器端验证函数。像这样的东西:

C#:

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

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);
      }
});

选择:

您也可以使用 customValidator,ASP 将为您完成所有的 jquery 工作。

于 2013-10-09T16:27:46.767 回答