1
0
Fork 0
mirror of synced 2024-07-03 21:50:34 +12:00
appwrite/public/scripts/views/forms/recaptcha.js
2019-05-09 11:01:51 +03:00

45 lines
1.6 KiB
JavaScript

(function (window) {
"use strict";
window.ls.container.get('view').add(
{
selector: 'data-forms-recaptcha',
repeat: false,
controller: function(element, document, window) {
var form = document.getElementById(element.dataset['formsRecaptcha'] || '');
var captcha = document.createElement('input');
captcha.type = 'hidden';
captcha.name = 'g-recaptcha-response';
element.parentNode.insertBefore(captcha, element.nextSibling);
var render = function() {
window.grecaptcha.render(element, {
'sitekey': element.dataset['sitekey'] || '',
'size': 'invisible',
'badge': 'inline',
'callback': function (token) {
captcha.value = token;
form.submit();
}
});
};
if(window.grecaptchaReady) {
render();
}
else {
document.addEventListener('recaptcha-loaded', render);
}
form.addEventListener('submit', function () {
if('' === captcha.value) {
event.preventDefault(); //prevent form submit before captcha is completed
window.grecaptcha.execute();
}
});
}
}
);
})(window);