【问题标题】:How to make Recaptcha a required field in MVC 3?如何使 Recaptcha 成为 MVC 3 中的必填字段?
【发布时间】:2011-06-21 18:57:33
【问题描述】:

我的注册表单上有验证码。 用户必须在 recaptcha 框中键入一些内容,然后才能将其发布到服务器。 我对其他字段进行了服务器端验证和客户端验证。

从 rcaptcha 生成的 html:

<input type="text" id="recaptcha_response_field" name="recaptcha_response_field" autocomplete="off" class="valid">

查看:

@ReCaptcha.GetHtml(theme: "red", publicKey: GetPublicKey())
@Html.ValidationMessageFor(m => m.recaptcha_response_field)

型号:

[Required(ErrorMessage = "'captcha required' ")]
public string recaptcha_response_field { get; set; }

加载时我看到“需要验证码”消息。但如果我输入一些东西,它仍然会出现。 表单提交时带有空的recaptcha 框。

如何在客户端设置recaptcha 必填字段?

感谢您的帮助

编辑: 我添加了这个来拦截提交 btn 点击事件,但它并没有停止发布表单。

    <button type="submit" id="btnSubmit" class="sprt bg_red bt_red h25" onsubmit="ValidateAndSubmit();">Signup</button>
<script type="text/javascript">    
    function ValidateAndSubmit() {
            var v=$('#recaptcha_response_field').val();
            if (v == '' || v == undefined) {
                alert('captcha is required');
                return false;
            }
            return true;
        }
</script>

【问题讨论】:

    标签: jquery asp.net validation asp.net-mvc-3


    【解决方案1】:

    要让它在您键入时工作,返回值,而不仅仅是调用它。类型

    onsubmit="return ValidateAndSubmit();"
    

    onclick="return ValidateAndSubmit();"
    

    您也可以尝试在表单标签上添加相同的验证。

    【讨论】:

    • 我同意这应该在服务器上完成 - 如果您在 Javascript 中使用逻辑来确定需要重新验证,则可以轻松编写一个忽略该检查的机器人/脚本。
    • @serotonic 如果你看到它唯一的检查有什么东西,而不是它是否正确。
    【解决方案2】:

    虽然这个问题已经很老了,但我认为分享我的解决方案可能会有所帮助,它支持 MVC 不显眼的 javascript。

    if ($("#recaptcha_response_field").length > 0) {
      $("#recaptcha_response_field").attr("data-val", "true")
        .attr("data-val-required", "The captcha field is required.");
      $("<span />")
        .attr("data-valmsg-replace", "true")
        .attr("data-valmsg-for", "recaptcha_response_field")
        .addClass("field-validation-valid")
        .appendTo($("#recaptcha_response_field").parents(".editor-field"));
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-26
      • 2023-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-08
      相关资源
      最近更新 更多