Can';在表单提交(JavaScript)上删除'PreventDefault'事件侦听器
我在表单上有一个隐私策略复选框,并且在“发件人提交”按钮上设置了Can';在表单提交(JavaScript)上删除'PreventDefault'事件侦听器,javascript,events,preventdefault,Javascript,Events,Preventdefault,我在表单上有一个隐私策略复选框,并且在“发件人提交”按钮上设置了preventDefault(),因此除非选中该复选框,否则不会提交电子邮件地址 在下面的代码中,我在复选框上放置了一个简单的removeEventListener方法,用于检查复选框是否被选中,但代码是否不起作用 preventDefault()方法起作用,但如果满足privacyCheckbox.checked==true条件,则不会提交 var mailFormSubmit=document.getElementById('
preventDefault()
,因此除非选中该复选框,否则不会提交电子邮件地址
在下面的代码中,我在复选框上放置了一个简单的removeEventListener
方法,用于检查复选框是否被选中,但代码是否不起作用
preventDefault()
方法起作用,但如果满足privacyCheckbox.checked==true
条件,则不会提交
var mailFormSubmit=document.getElementById('mc-embedded-subscribe'),//订阅按钮
privacyCheckbox=document.getElementById('privacy-checkbox')//checkbox
//防止违约
函数stopFormSubmit(e){
e、 预防默认值()
}
if(privacyCheckbox.checked==false){
mailFormSubmit.addEventListener('click',stopFormSubmit,false)
}
if(privacyCheckbox.checked==true){
mailFormSubmit.removeEventListener('click',stopFormSubmit,false)
}
您的逻辑只运行了一次,因此它将只考虑复选框的初始状态。如果要在复选框更改时附加/分离事件侦听器,则必须在复选框上连接事件侦听器:
const mailFormSubmit = document.getElementById('mc-embedded-subscribe'), // subscribe button
privacyCheckbox = document.getElementById('privacy-checkbox') // checkbox
function stopFormSubmit (e) {
e.preventDefault()
}
function updateSubmitBehavior() {
if (privacyCheckbox.checked) {
mailFormSubmit.removeEventListener('click', stopFormSubmit, false)
} else {
mailFormSubmit.addEventListener('click', stopFormSubmit, false)
}
}
privacyCheckbox.addEventListener('change', updateSubmitBehavior);
updateSubmitBehavior();
您不需要删除VentListener,只要这样做即可。让我假设你开枪了 formSumitfunc在表单提交事件中,您的功能将
function formSumitfunc(e) {
if (privacyCheckbox.checked == false) {
e.preventDefault();
}
if (privacyCheckbox.checked == true) {
// do whatever you want to do.
}
}
逻辑住在哪里?当
privacyCheckbox
更改时,您是否在事件期间运行它?@Jacob上面的代码是该站点的my.js文件中的完整代码。嗨@Jacob当未使用此答案选中复选框时,表单仍然提交。复选框是否开始选中?您可能需要调用函数一次来初始化状态。相应更新。啊,是的,现在可以了,谢谢。明天我将着手处理代码及其工作原理——在英国已经很晚了。嗨@adityaKumar,这只是伪代码,没有添加任何东西来解决问题。