Recaptcha的弹出警告

时间:2018-01-08 09:53:47

标签: javascript html asp.net validation recaptcha

我有Ajax表单。

使用HTMLSelectElement.setCustomValidity()验证客户端上的表单字段。一切正常。发生错误时,浏览器会显示一个带有提示的漂亮弹出窗口。它看起来像这样:

https://youtu.be/XfNNpktl_X8

我想为未经检查的Recapcha制作相同的弹出窗口,但我不知道如何。这是Recapcha块的代码:

<div class="group-item element-fullwidth">
   <div class="form-group form-group-select-white text-left">
      <label id="g-capcha-label" for="g-capcha" class="form-label form-label-outside rd-input-label text-white-05">Захист</label>
      <div id="g-capcha" required name="recaptcha" class="g-recaptcha" data-sitekey="хххххххххххххххххххххххххххххх"></div>
   </div>
</div>

Recapcha验证在表单发送之前发生,也可以正常工作。这是代码:

function OnBeginBooking() {
   var v = grecaptcha.getResponse();
   if (v.length === 0) {
      //What should I write here?
      return false;
   } else {
      $(".loader").removeClass("hidden-loader");
      $("#bookingpanel").addClass("hidden-booking-button");
      return true;
   }        
}

谁可以建议解决方案?是否可以为div调用CustomValidity()弹出窗口?或者也许有另一种选择?

1 个答案:

答案 0 :(得分:1)

嗯......由于没有答案,我自己制作了弹出窗口。它看起来像这样:

pop-up

https://youtu.be/SfdNPt2ST-U

也许有人会派上用场 - 这是代码:

CSS:

#toolTip {
    background-color: #ffffff;
    border: 1px solid;
    width: 170px;
    height: 40px;
    margin-left: 15px;
    position:absolute;
    border-radius: 3px;
    -moz-border-radius: 3px;
    -webkit-border-radius: 3px;
    -webkit-box-shadow: 6px 6px 12px -4px rgba(0,0,0,0.7);
    -moz-box-shadow: 6px 6px 12px -4px rgba(0,0,0,0.7);
    box-shadow: 6px 6px 12px -4px rgba(0,0,0,0.7);
    left: -3px;
    top: 80px;
    transition: 0.3s;
    -moz-transition: 0.3s;
    -webkit-transition: 0.3s;
    -o-transition: 0.3s;
}

#toolTip span {
    position: absolute;
    padding:10px;
    font-family: sans-serif;
    font-size: 13px;
    color: #2b2b2b;
}

#toolTip img {
    margin-top: 6px;
    z-index:15;
    margin-left: 5px;
}

#arrow {
    background-color: #ffffff;
    border: 1px solid;
    border-bottom: none;
    border-right: none;
    width: 10px;
    height: 10px;
    position: absolute;
    top: -6px;
    left: 10px;
    -webkit-transform: rotate(45deg);
    -moz-transform:    rotate(45deg);
    -ms-transform:     rotate(45deg);
    -o-transform:      rotate(45deg);
}

.tooltip-hidden {
    opacity:0;
}

HTML:

<div class="form-group form-group-select-white text-left">
                <label id="g-capcha-label" for="g-capcha" class="form-label form-label-outside rd-input-label text-white-05">Захист</label>
                <div id="g-capcha" required name="recaptcha" class="g-recaptcha" data-sitekey="6Lc2wSwUAAAAACLMEVOKUPoe0uhiZT-JNIBmYVMb"></div>
                <div id="toolTip" class="tooltip-hidden">
                    <img src="/images/alertiico.png" width="25" height="25">
                    <span>Відмітьте поле!!!</span>
                    <div id="arrow"></div>
                </div>
            </div>

JS(这是我的Ajax表单的OnBegin函数):

function OnBeginBooking() {
var v = grecaptcha.getResponse();
if (v.length === 0) {
    $("#toolTip").removeClass("tooltip-hidden");
    setTimeout(function () { $("#toolTip").addClass("tooltip-hidden") }, 2500);
        return false;
    }

}