停止按钮传递到另一页JavaScript
在单击按钮执行之前,我想验证填写的内容是否符合要求。如果出现任何错误消息,则无法重定向页面。 我使用了.preventDefault(),但它不起作用。即使出现错误,页面仍被重定向停止按钮传递到另一页JavaScript,javascript,Javascript,在单击按钮执行之前,我想验证填写的内容是否符合要求。如果出现任何错误消息,则无法重定向页面。 我使用了.preventDefault(),但它不起作用。即使出现错误,页面仍被重定向 让btnAjtBtlCellier=document.getElementById('ajouterBouteilleCellier'); 让fAjtBtlCellier=document.getElementById('form-ajouter-btl'); let inputEles=document.quer
让btnAjtBtlCellier=document.getElementById('ajouterBouteilleCellier');
让fAjtBtlCellier=document.getElementById('form-ajouter-btl');
let inputEles=document.querySelectorAll(“#form ajouter btl input”);
设erreurAjtBtl=false;
inputEles.forEach(函数(元素){
//验证所有必需的输入
元素。addEventListener('change',(evt)=>{
quantiteValideAjt();
日期_achatValideAjt();
prixValideAjt();
})
});
btnAjtBtlCellier.addEventListener('单击',(evt)=>{
erreurAjtBtl=false;
if(erreurAjtBtl)evt.preventDefault();
})
名称:
Millesime:
定量:
日期:
大奖赛:
加德:
笔记
假设
quantiteValideAjt();
date_achatValideAjt();
prixValideAjt();
如果出现错误,则返回false;如果有效,则返回true
btnAjtBtlCellier.addEventListener('click', (evt) => {
const erreurAjtBtl = !quantiteValideAjt() || !date_achatValideAjt() || !prixValideAjt();
if (erreurAjtBtl) evt.preventDefault();
})
您正在将每次单击返回时的变量“erreurAjtBtl”设置为false,即使之前已成功验证输入字段。我建议删除该行,并在更改事件中设置此变量,如下所示:
element.addEventListener('change', (evt) => {
if (quantiteValideAjt() && date_achatValideAjt() && prixValideAjt())
erreurAjtBtl = false;
else
erreurAjtBtl = true;
})
我假设验证函数返回true或false。erreurAjtBtl
设置为false,然后立即检查它是否为true,然后才运行preventDefault()
。由于false永远不会为true,preventDefault()
永远不会被激发。谢谢mplungjan,我已经更正了。你的答案也是一个很好的方法:-)是的,但是如果错误是真的,你仍然不会停止提交