2013-10-09 74 views
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"); 
     } 
+0

如果您不想提交表单并仍然执行服务器功能,请考虑使用ajax。由于您从处理程序返回false,它永远不会提交您的表单并执行服务器功能。或者在验证失败时返回false。 – PSL

+0

你每次都会返回false。它如何执行服务器代码。 –

+0

您正在使用而不是

回答

1

我相信你能实现你想要什么,通过绑定event.preventDefault()submit事件的形式,而不是click前夕按钮的nt。

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

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

  2. 设置SubmitForm()功能提交表单,那么功能绑定到你的提交事件:

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

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

'return false'做同样的事情。并没有提交OP的表格。完全阅读问题。 – PSL

+0

如果我做preventDefault(),服务器将不会执行v4_Click(),因为precventDefault()也会预警它。 –

+0

试试我更新的答案。我认为将preventDefault绑定到提交事件将允许调用onserverclick函数。 – Axel

1

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

但是再次While using server side function我是n OT得到这个

+0

'返回false'执行同样的事情v4_click。并没有提交OP的表格。完全阅读问题。 – PSL

0

的问题是在你的JavaScript代码,你的情况return false总是被调用,而不是你应该只当你的验证失败称之为:

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

编辑:

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

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的东西给你。

+0

我不想提交表单,所以我需要防止它没有阻止按钮的onserverclick动作。 –

+0

看看我的编辑,我会添加一些代码,以及 –

+0

几乎得到它,旁边的ajax总是在错误警报。 –