【问题标题】:how to identify which button made request with javascript如何使用javascript识别哪个按钮发出请求
【发布时间】:2014-04-22 14:56:12
【问题描述】:

我有三个更新面板。现在我只实现了一项功能,即在单击更新面板时禁用按钮并在请求结束后启用它。由于对 javascript 的了解很少,我为此创建了三个函数:

<script>

        Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(BeginRequestHandler1);

        function BeginRequestHandler1(sender, args) {
            document.getElementById('<%=btn_Login.ClientID%>').innerText = "Processing..";
            $('#btn_Login').attr('class', 'btn-inactive');
            args.get_postBackElement().disabled = true;
        }

        Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(BeginRequestHandler2);

        function BeginRequestHandler2(sender, args) {
            document.getElementById('<%=btn_Subscribe.ClientID%>').innerText = "Processing..";
            $('#btn_Subscribe').attr('class', 'btn-inactive');
            args.get_postBackElement().disabled = true;
        }

        Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(BeginRequestHandler3);

        function BeginRequestHandler3(sender, args) {
            document.getElementById('<%=btnsubmit.ClientID%>').innerText = "Processing..";
            $('#btn_Subscribe').attr('class', 'btn-inactive');
            args.get_postBackElement().disabled = true;
        }

    </script>

这里三个是用于处理三个 diff btoon 请求的 diff 脚本。在这里,我想制作一个通用脚本来识别哪个按钮使用 id 发出回发请求,然后只有它的行为会被改变。

请帮帮我...

【问题讨论】:

  • 无论Sys.WebForms.PageRequestManager 是什么,我都帮不了你,但我建议给这些函数起不同的名字。上面的代码每次都使用你想要的函数调用add_beginRequest,但是它起作用的 reason 有点模糊,如果你将这些脚本标签组合成一个脚本标签,它会失败(所有三个调用都将使用 last BeginRequestHandler 函数)。这有点微妙。
  • 在表单中输入hidden 并在提交前设置值。
  • 与问题无关,但您在所有函数中使用基本完全相同的行为,将它们组合成一个,并传递元素的 id,例如:'#btn_Login' 作为参数。跨度>
  • @Zarich - 你能用代码解释一下吗?

标签: javascript jquery


【解决方案1】:

您无需注册add_beginRequest 功能即可实现您需要的功能。

像这样定义你的按钮:

<asp:Button runat="server" ID="btn_Login" Text="Login" OnClientClick="disableButton(this)" OnClick="ProcessClick_Handler" />

<asp:Button runat="server" ID="btn_Subscribe" Text="Login" OnClientClick="disableButton(this)" OnClick="ProcessClick_Handler" />

<asp:Button runat="server" ID="btnsubmit" Text="Login" OnClientClick="disableButton(this)" OnClick="ProcessClick_Handler" />

并使用此脚本禁用:

<script>
 function disableButton(button){
     $(button).val("Processing..").attr('class','btn-inactive').attr('disabled',true);
 }
</script>

就是这样!

【讨论】:

  • 很好。但是由于缺点,我必须使用 Page.IsValid 方法验证页面。它是如何第一次显示处理消息的。
  • 你能用Page.IsValid协调修改你的函数吗?
【解决方案2】:

给每个按钮一个 id 并使用 document.getElementBYId(id)。现在您可以识别每个按钮的点击情况。

【讨论】:

  • 示例: 像这样然后在函数中将其放入变量中,然后检查按下了哪个按钮..
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-24
  • 1970-01-01
  • 1970-01-01
  • 2014-01-05
  • 1970-01-01
相关资源
最近更新 更多