[英]Prevent Elementor form submission with jQuery
我們有一個簡單的 Elementor 表單,其中一個字段用於 email 地址和一個提交按鈕,供人們注冊時事通訊。
我正在嘗試添加一些自定義驗證,以僅允許來自.co.uk
、 .gov.uk
和gmail.com
email 的提交地址與其中一個地址匹配,並阻止提交。
驗證本身有效,因為它在適當時顯示自定義錯誤消息,但盡管調用e.preventDefault()
和e.stopPropagation();
但它並沒有阻止提交。 ,並return false;
.
我看過的每個線程都說這在理論上應該有效,但也許它與 Elementor forms 不同? 有任何想法嗎?
(function($) {
$(document).ready(function() {
const accepted = ['.co.uk', '.gov.uk', 'gmail.com'],
form = $('#mail_signup');
$(form).submit(function(e) {
$('.mail-form-invalid').remove();
const email = $('#form-field-email').val(),
valid = accepted.some(accepted => email.includes(accepted));
if (!valid) {
e.preventDefault();
e.stopPropagation();
$(form).after('<p class="mail-form-invalid" style="color: #f00;">Sorry, we only allow submissions from .co.uk, .gov.uk and gmail.com.</p>');
return false;
}
});
});
})(jQuery);
感謝 Rory McCrossan 的評論,我能夠更新我的代碼來監聽提交按鈕的點擊:
<script>
(function($){
$(document).ready(function(){
const accepted = ['.co.uk','.gov.uk','gmail.com'],
form = $('#mail_signup'),
input = $('#form-field-email'),
submit = $(form).find('button[type="submit"]');
function validate(e){
$('.mail-form-invalid').remove();
const email = $(input).val(),
valid = accepted.some( accepted => email.includes( accepted ) );
if (!valid) {
e.preventDefault();
e.stopPropagation();
$(form).after('<p class="mail-form-invalid" style="color: #f00; margin-top: 10px;">Sorry, we only allow submissions from .co.uk, .gov.uk and gmail.com.</p>');
return false;
}
}
$(submit).on('click',function(e){
validate(e);
});
});
})(jQuery);
</script>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.