【问题标题】:Trigger Click Event on aspx Button on an External User Control在外部用户控件上的 aspx 按钮上触发 Click 事件
【发布时间】:2020-05-09 20:32:35
【问题描述】:

在下面的 subscribe.aspx 文件中...

<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="subscribe.aspx.vb" Inherits="Company.Website.clsSubscribe_Page" %>

<%@ Register TagPrefix="uc1" TagName="ucSubscribe" Src="controls/ucSubscribe.ascx" %>

<!doctype html>
<html class="no-js" lang="">

<head>
    <uc1:ucHtmlHead ID="HtmlHead" Title="Subscribe to our Newsletters" Description="Subscribe OurNewsletter"
        Keywords="newsletter, subscription" runat="server" />

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script src="https://www.google.com/recaptcha/api.js?render=6LdV088RFFFEaKMW0y_cxHAr8Ok-l3Ks3xO9"></script>
</head>

<body>
    <form id="formMain" runat="server">
        <div class="internal">
            <div class="content">
                <a name="contentContainer" class="hide"></a>
                <div class="newslettersign-up">
                    <div id="centreColumn" role="main">
                        <uc1:ucSubscribe ID="ucSubscribe" runat="server" />
                    </div>
                </div>
            </div>

        </div>
    </form>

        <script type="text/javascript">
    function VerifyCaptcha() {

        grecaptcha.ready(function () {
            grecaptcha.execute('6LdV088RFFFEaKMW0y_cxHAr8Ok-l3Ks3xO9').then(function (token) {

                $.ajax({
                    type: "POST",
                    url: "subscribe.aspx/VerifyCaptcha",
                    data: "{'response':'" + token + "'}",
                    async: false,
                    contentType: "application/json; charset=utf-8",
                    dataType: "json",
                    success: function (response) {
                        if (response.d != "null") {
                            var obj = JSON.parse(response.d);
                            var success = obj.success;
                            var score = obj.score;
                            if (success == false || score < 0.5) { 
                                ShowCaptchaFailureMsg();
                            } else {
                                // Check score

                                $("[id$='cmdSubscribe']").trigger('click');  
                                return true;
                            }
                        }
                        else {
                            ShowCaptchaFailureMsg();
                        }
                    }
                });
            });
        });
    }
    function ShowCaptchaFailureMsg() {
        // Show message on website accordingly
        alert("this is a bot..");
    }

</script>
</body>

</html>

我愿意

$("[id$='cmdSubscribe']").trigger('click'); 

触发点击 ucSubscribe 用户控件上的 asp 按钮

<input id="someid" type="button" value="Subscribe" onclick="return VerifyCaptcha();">
<asp:Button ID="cmdSubscribe" Text="Subscribe" runat="server" alternatetext="Subscribe" Style="display: none;"></asp:Button>

但是,此触发器不会触发点击上述按钮。不知道为什么。

需要另一种方法来触发上述按钮上的此点击事件。

【问题讨论】:

  • 你看到渲染的 htlp 了吗?页面上的cmdSubscribe是一样的还是需要加上&lt;%=cmdSubscribe.ClientID%&gt;
  • 如何使用__doPostBack

标签: javascript jquery asp.net .net webforms


【解决方案1】:

由于问题可能来自不同的问题,以下列表将帮助您解决代码问题:

  • 代码暴露,javascript函数VerifySub没有被调用,因此gresub.ready函数也没有被调用,不会触发点击事件;
  • 如果您的按钮有 id,您可以改用 $("#cmdSubscribe").click(); jquery syntax
  • 什么是gresub

【讨论】:

  • 我已经用更准确的内容更新了上述问题。
  • 我也试过 $("#cmdSubscribe").click();但对我不起作用。
猜你喜欢
  • 2012-10-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-08
  • 2012-02-27
  • 2011-04-05
相关资源
最近更新 更多