【发布时间】:2022-01-12 21:40:09
【问题描述】:
我的 ASP.net 网络表单网站不断收到垃圾邮件。
我在网站上放置了一个 Google reCaptcha V2 控件,但由于提交按钮始终处于启用状态,我无法让它工作。这是我的 .ascx 代码(它是每个页面上的注册页脚):
<script>
$(document).ready(
function () {
$('#Button1').prop("disabled", true);
}
);
</script>
<script type="text/javascript">
function recaptcha_callback() {
$('#Button1').prop("disbled", false);
}
</script>
这里是验证码和按钮:
<div class="g-recaptcha" data-callback="recaptcha_callback"
data-sitekey="NOTPOSTKEYHERE"></div>
<asp:Button class="btn btn-primary" ID="Button1" runat="server"
CausesValidation="False" Text="Go" OnClientClick="Confirm();"
OnClick="Button1_Click" />
jQuery 似乎什么都不做。我真的只是希望它禁用提交按钮,直到检查 reCaptcha。我完全不相信这会击败垃圾邮件程序,因为无论我做什么,它们都会以某种方式通过。我也添加了一个蜜罐,但我什至无法做到这一点,因为 reCaptcha 不会启用和禁用按钮。
我尝试将 disabled="disabled" 添加到 asp:Button 标记中,但它永远不会被覆盖。周围 div 之一中的 .css 类可能不会让我覆盖该属性,但我不知道如何将“!重要”与禁用的属性一起使用。
我也尝试在 ascx.cs 代码中执行此操作,但是一旦代码到达后端,表单就已提交。没关系,但是如果用户提交时没有 reCaptcha,我不知道它是否是真实用户。
任何帮助表示赞赏。
【问题讨论】:
-
"disabled" 在回调中拼写错误。
-
让我猜猜:您使用的是“母版页”吗?如果是这样,按钮的客户端 ID 将与服务器端 ID 不同。您需要将按钮的the
ClientIDModeproperty 设置为Static。 -
天啊,这工作@RichardDeeming !可悲的是,这些没有:` document.getElementById("Footer$Button1").disabled = true; document.getElementById("Footer_Button1").disabled = true;`
-
使用浏览器中的“查看源代码”或“检查元素”选项来查看您尝试修改的控件的客户端 ID。
标签: jquery css asp.net recaptcha