Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/456.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
停止按钮传递到另一页JavaScript_Javascript - Fatal编程技术网

停止按钮传递到另一页JavaScript

停止按钮传递到另一页JavaScript,javascript,Javascript,在单击按钮执行之前,我想验证填写的内容是否符合要求。如果出现任何错误消息,则无法重定向页面。 我使用了.preventDefault(),但它不起作用。即使出现错误,页面仍被重定向 让btnAjtBtlCellier=document.getElementById('ajouterBouteilleCellier'); 让fAjtBtlCellier=document.getElementById('form-ajouter-btl'); let inputEles=document.quer

在单击按钮执行之前,我想验证填写的内容是否符合要求。如果出现任何错误消息,则无法重定向页面。 我使用了.preventDefault(),但它不起作用。即使出现错误,页面仍被重定向

让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,我已经更正了。你的答案也是一个很好的方法:-)是的,但是如果错误是真的,你仍然不会停止提交