ฉันมีแบบฟอร์มการสมัครสมาชิกกับ AJAX เพื่อที่ฉันจะต้องการรีเฟรชภาพ Recaptcha ทุกครั้งที่มีข้อผิดพลาดเกิดขึ้น (เช่นชื่อผู้ใช้ที่ใช้งานอยู่)
ฉันกำลังมองหารหัสที่เข้ากันได้กับ ReCaptcha เพื่อโหลดซ้ำโดยใช้ JavaScript
ฉันมีแบบฟอร์มการสมัครสมาชิกกับ AJAX เพื่อที่ฉันจะต้องการรีเฟรชภาพ Recaptcha ทุกครั้งที่มีข้อผิดพลาดเกิดขึ้น (เช่นชื่อผู้ใช้ที่ใช้งานอยู่)
ฉันกำลังมองหารหัสที่เข้ากันได้กับ ReCaptcha เพื่อโหลดซ้ำโดยใช้ JavaScript
คำตอบ:
สำคัญ: เวอร์ชัน 1.0 ของ reCAPTCHA API ไม่ได้รับการสนับสนุนอีกต่อไปโปรดอัปเกรดเป็นเวอร์ชัน 2.0
คุณสามารถใช้grecaptcha.reset (); เพื่อรีเซ็ต captcha
ที่มา: https://developers.google.com/recaptcha/docs/verify#api-request
สำหรับ reCaptcha v2 ให้ใช้:
grecaptcha.reset();
หากคุณใช้ reCaptcha v1 ( อาจไม่ใช่ ):
Recaptcha.reload();
นี้จะทำอย่างไรถ้ามีการโหลดแล้ว Recaptcha window
บน
(อัปเดตตามความคิดเห็นของ @ SebiH ด้านล่าง)
grecaptcha.reset();
( documenation ) แล้ว
grecaptcha.reset();
กับแอปตอบโต้ของฉันและมันทำงานได้อย่างสมบูรณ์แบบ
if (window.grecaptcha) grecaptcha.reset();
หากคุณใช้เวอร์ชัน 1
Recaptcha.reload();
หากคุณใช้เวอร์ชัน 2
grecaptcha.reset();
grecaptcha.reset(opt_widget_id)
รีเซ็ตวิดเจ็ต reCAPTCHA สามารถส่ง id วิดเจ็ตเสริมได้มิฉะนั้นฟังก์ชันจะรีเซ็ตวิดเจ็ตแรกที่สร้างขึ้น (จากหน้าเว็บของ Google)
ลองสิ่งนี้
<script type="text/javascript" src="//www.google.com/recaptcha/api/js/recaptcha_ajax.js"></script>
<script type="text/javascript">
function showRecaptcha() {
Recaptcha.create("YOURPUBLICKEY", 'captchadiv', {
theme: 'red',
callback: Recaptcha.focus_response_field
});
}
</script>
<div id="captchadiv"></div>
ถ้าคุณเรียก callL showRecaptcha captchadiv จะถูกเติมด้วยอินสแตนซ์ recaptcha ใหม่
หรือคุณสามารถจำลองการคลิกที่ปุ่มรีเฟรช
// If recaptcha object exists, refresh it
if (typeof Recaptcha != "undefined") {
jQuery('#recaptcha_reload').click();
}
Recaptcha
และgrecaptcha
ทั้งคู่ไม่ได้ถูกกำหนดไว้ในหน้าของฉัน สิ่งนี้ใช้ได้กับฉันโดยมีการปรับเปลี่ยนเล็กน้อย:if( $("#recaptcha_reload").length > 0 ){ ....
สำหรับผู้ใช้ AngularJS:
$window.grecaptcha.reset();
สำหรับการใช้reCaptcha v2เวอร์ชันใหม่:
grecaptcha.reset();
หากคุณใช้ reCAPTCHA API เวอร์ชัน 1.0 โปรดอัปเกรดเป็นเวอร์ชัน 2.0 (ไม่รองรับรุ่น 1.0)
ใช้grecaptcha.reset();
เพื่อรีเซ็ต captcha
หากคุณใช้ recaptcha 2.0 ใหม่ให้ใช้สิ่งนี้: สำหรับโค้ดที่อยู่ด้านหลัง:
ScriptManager.RegisterStartupScript(this, this.GetType(), "CaptchaReload", "$.getScript(\"https://www.google.com/recaptcha/api.js\", function () {});", true);
สำหรับจาวาสคริปต์ง่าย ๆ
<script>$.getScript(\"https://www.google.com/recaptcha/api.js\", function () {});</script>