在外部用户控件上的 aspx 按钮上触发 Click 事件

Posted

技术标签:

【中文标题】在外部用户控件上的 aspx 按钮上触发 Click 事件【英文标题】:Trigger Click Event on aspx Button on an External User Control 【发布时间】: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 【参考方案1】:

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

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

【讨论】:

我已经用更准确的内容更新了上述问题。 我也试过 $("#cmdSubscribe").click();但对我不起作用。

以上是关于在外部用户控件上的 aspx 按钮上触发 Click 事件的主要内容,如果未能解决你的问题,请参考以下文章

找出哪个控件触发了回发

使用第三方脚本按钮,在单击页面上的其他按钮时触发

当用户控件具有焦点时,如何触发表单级事件?

如何通过关闭当前的aspx来触发另一个aspx中的按钮?

Laravel where() 和 orderBy() 在外部服务器上的关系表上

创建在外部进程中运行的 WPF“控件”