表单验证失败阻止提交

20 篇文章 0 订阅
18 篇文章 0 订阅

表单验证失败阻止提交

提交表单的时候往往需要经过验证表单的内容是否符合要求,我们举一个例子

<form action="/search" id="search" name="search" method="GET">
    <div class="u-search">
        <input type="text" name="keyword" id="keyword" placeholder="输入搜索内容">
        <button  type="submit"></button>
    </div>
</form>

一般来说,在验证失败的时候,我们就不进行提交了,但是如果我们这么写

let form = document.forms.search;

// 验证表单是否为空
function search() {
    if (form.keyword.value === "") {
        console.log("hehe");
        return false;
    } else {
        return true;
    }
}

form.onsubmit = function () {
    search();
}

还是会出现表单提交,后端无法处理的情况
这是,只要将最后的onsubmit函数更改为如下

form.onsubmit = function () {
    return search();
}

更好的解决办法

随着JS的一次次改变,我们更推荐使用addEventListener来取代on事件绑定 在这个过程中发现了一个问题

form.addEventListener('submit',function () {
    return search();
});

这样并没由阻止表单的提交,这是为什么呢?
原因是当我们使用on进行事件绑定的时候,会发生覆盖
比如说

form.onsubmit = function () {
    console.log("hello");
}

form.onsubmit = function () {
    console.log("world");
}

这个时候,在提交的时候只会显示world,而addEventListener没有这个效果,所以,我们要组织默认的事件

form.addEventListener('submit',function (event) {
    event.preventDefault();
    return search();
});

更好的写法是,

form.addEventListener('submit', (event) => { 
	if (!search()) event.preventDefault() 
})
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值