今天在做一个练习题的时候遇到一个小问题,
实现一个重置按钮,当点击按钮时,提示 “是否要重新填写” ,如果用户点击确定,则重置表达,否则不做处理。
看到题目时我邪魅一笑:so easy,但是在test时,突然发现不管我点击的是确定还是取消,这丫全都给我重置了,各种调试我的绑定函数,无果。
然后开始google解决方案,最终搜索到了一个可行方案。
有两种方案,第一种借助reset按钮,十分精简。
第二种方案,自己实现reset方法
第一种方案代码如下:
<!-- html-->
<!-- 注意:一定要把tipReset()方法return 回来-->
<input type="reset" onclick="return tipReset()" value="重置">
// js
function tipReset() {
// body...
return confirm("是否重新填写?");
}
第二种方案代码如下:
<!-- html-->
<!-- 注意:一定要加上return false;-->
<<button onclick="tipReset();return false;">重置</button>
// js
function tipReset() {
// body...
var flag = confirm("是否重新填写?");
//alert(flag);
if(flag){
alert("清除成功!");
document.getElementById("myForm").reset();
}
}
虽然没有搜索到最终原因,但是我猜测是因为触发onclick事件后会默认刷新页面,而如果在onclick事件中返回false值,就阻止了onclick的触发,因此也阻止了界面刷新。
而一开始我在tipReset()函数里return false值,只是对于这个函数的阻止,如果没有在onclick中return tipReset(),虽然onclick事件接受到了tipReset()返回的false值,但实际上onclick事件的返回值并不会被影响,所以onclick依然会执行。
一步一步的成长~