【问题标题】:jquery button trigger server side onclick eventjquery按钮触发服务器端onclick事件
【发布时间】:2012-05-11 18:50:40
【问题描述】:

我正在使用 jquery 对话框,当用户单击确定时,应该触发服务器端的 onclick 事件,如果单击取消,则没有任何反应。

我必须通过 preventDefault() 函数在一开始就阻止点击函数。

  $(document).ready(function () {
         $("#<%=submit.ClientID %>").click(function (event) {
             event.preventDefault();
                $("#confirm").dialog({
                    buttons: {
                        "OK": function () {  $(this).dialog("close"); 
                              Here should be the code to trigger the server side click event


                     },
                        "Cancel": function () { $(this).dialog("close");},
                    } 
                });
         });
     });

我不知道如何触发服务器端 onclick 事件。有任何想法吗?谢谢

【问题讨论】:

  • 从 javascript 在服务器端执行任何操作的唯一方法是发送 ajax 请求,或者通过当前页面或 iframe 提交表单。你怎么能在服务器端有一个点击事件?服务器端不存在 GUI。
  • @KevinB 我是 jquery 的新手。据我所知,asp.net 按钮有 onclick 事件和 onclientclick 事件,onclick 事件在服务器端,我想在用户单击“确定”时触发该事件
  • 其中一个答案对您有帮助吗?如果是,请标记答案或提供反馈。

标签: javascript jquery asp.net


【解决方案1】:

https://stackoverflow.com/a/10583339/1202242

我用了两个按钮,一个是隐藏的。 完美解决了我的问题

【讨论】:

    【解决方案2】:

    将event.preventDefault() 放在取消部分或某种条件中,这样它就不会在每次点击时运行。

    【讨论】:

      【解决方案3】:

      我认为您在服务器端和客户端之间感到困惑。 如果你想在服务器端触发事件,你需要通知他(可以通过 ajax 调用来完成)。 click 事件是客户端事件,不会在服务器端执行任何操作。 尝试在“OK”函数下添加一些代码,以通过ajax 调用通知服务器。

      无论如何,您应该将event.preventDefault() 调用移到“取消”函数中。

      编辑:处理它的另一种方法是防止提交如果您不希望发生。在您的表单标签添加onsubmit="foo()" 并定义:

      function foo(){
         //call your dialog and return true to continue the submit and false to cancel.
      }
      

      【讨论】:

      • 如果我将 event.preventDefault() 移到“取消”函数中,则在用户单击弹出对话框上的“确定”之前单击“提交”按钮时,服务器端代码将运行跨度>
      • 因此,如果您不想创建提交,则需要将其放在开头(就像您所做的那样)并在“OK”上手动调用 $("#your_form_id").submit()函数或创建一个 ajax 调用。
      • 那是我的问题,我尝试使用 $("#your_form_id").submit() 在服务器端没有触发 submit_onClick() 函数,我不知道如何使用ajax,你能给我举个例子吗?
      • 我更新了我的评论。您的对话框函数应该返回一个值。将此值传递给提交事件时调用的函数。
      【解决方案4】:

      它看起来有点依赖于实现细节(即使它们被广泛使用以至于它们不会被改变)但代码是这样的:

      __doPostBack('submit','OnClick');
      

      这将为名为@9​​87654324@ 的控件执行OnClick 事件处理程序。作为参考,看看这个关于how postbacks works in ASP.NET的小教程。

      【讨论】:

      • @Pita 我记得一些与 ID 为“提交”的按钮相关的问题(在某些浏览器中)。我不确定,所以欢迎任何信息。无论如何,这应该可以工作(我也使用它),但是您可能必须将您的按钮重命名为其他名称。
      猜你喜欢
      • 1970-01-01
      • 2012-07-19
      • 2012-01-28
      • 1970-01-01
      • 2019-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多