Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/114.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 单击按钮时阻止表单提交_C#_Jquery_Html - Fatal编程技术网

C# 单击按钮时阻止表单提交

C# 单击按钮时阻止表单提交,c#,jquery,html,C#,Jquery,Html,我在表单中有一个按钮。 问题是,当我单击它时,它不会执行服务器端功能。 在执行服务器功能和客户端验证时,是否可以防止表单提交 提前谢谢 html(表单内部) c# 我相信通过将event.preventDefault()绑定到表单的submit事件,而不是按钮的click事件,您可以实现您想要的 为按钮设置一个onclick,以调用提交表单的函数 验证 设置SubmitForm()函数以提交表单,然后将函数绑定到提交事件: 函数SubmitForm(){ $('表格1')。提交(); } $(函

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

提前谢谢

html(表单内部)

c#


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

  • 为按钮设置一个
    onclick
    ,以调用提交表单的函数

    验证

  • 设置
    SubmitForm()
    函数以提交表单,然后将函数绑定到提交事件:

  • 函数SubmitForm(){ $('表格1')。提交(); } $(函数(){ $('#form1')。提交(函数(事件){ if(验证()){ 滑动步骤(5); } 其他的 { //验证失败,阻止表单提交。 event.preventDefault(); } }); });
    是否可以阻止表单提交
    是 您只需在jquery上单击按钮即可编写
    e.preventDefault()/returnfalse()


    但是,在使用服务器端函数时,
    我不明白这一点

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

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

    基本上,如果你想调用button_click事件,你需要提交表单,在你的例子中,我将使用
    WebMethod
    调用ajax的服务器端验证函数。大概是这样的:

    c#:

    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);
          }
    });
    
    备选方案:


    您也可以使用自定义验证器,ASP将为您做所有jQuery的东西。

    如果您不想提交表单,仍然执行服务器功能,请考虑使用Ajax。由于处理程序返回false,它将永远不会提交表单并执行服务器函数。或者在验证失败时返回false。每次都返回false。它如何执行服务器代码。您正在使用而不是,对吗?两种方法都尝试了,但都没有成功
    返回false
    执行相同的操作。它没有为OP提交表单。请完整阅读问题。如果我执行preventDefault(),服务器将不会执行v4\u Click(),因为preventDefault()也将执行Prevent。请尝试我更新的答案。我认为将preventDefault绑定到submit事件将允许调用onserverclick函数。解决方案没有阻止表单提交,服务器也没有执行v4_单击
    return false
    。它没有为OP提交表单。请完整阅读问题。我不想提交表单,因此我需要在不阻止按钮在服务器上单击操作的情况下阻止表单。几乎可以得到它,除了ajax之外,它总是处于错误警报状态。
    protected void v4_Click(object sender, System.EventArgs e)
            {
                System.Diagnostics.Debug.Write("test");
            }
    
    function SubmitForm() { $('#form1').submit(); } $(function () { $('#form1').submit(function (event) { if (validation()) { slideToStep(5); } else { //Validation Failed, prevent form from submitting. event.preventDefault(); } }); });
    $('#v4').click(function (event) {
         if (validation()) {
             slideToStep(5);
         } else{
             return false;
         }
    });
    
    [WebMethod]
    [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
    public static string Validate(string params)
    {
        // your validations
        return "Received : " + params;
    }
    
    $(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);
          }
    });