失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > html输入框重置 关于自定义input输入框清空方法bug的解决方案【转载】

html输入框重置 关于自定义input输入框清空方法bug的解决方案【转载】

时间:2020-06-20 17:35:05

相关推荐

html输入框重置 关于自定义input输入框清空方法bug的解决方案【转载】

前两天看到一个问题:input 聚焦时 侧边清空按钮(自定义的按钮)要点击两次才能把内容清空。(真机测试时遇到)

通俗点就是说:自定义了一个清空的按钮,在input输入(聚焦)的时候,点击清空没反应。

这引起我强烈的好奇心了。

先考虑清空的按钮的事件有没有触发。

我感觉是会触发的,因为之前有做过手机号发送验证码的,没试过输入手机号的时候,点击不能触发发送验证码的情况。

测试后,果然,清空的按钮的事件是有触发,方法执行之后(setData),值是有改变了的。

那么问题来了,最后value值为什么没有变化呢?

显然,还有其他的事件触发了,执行了setData。

经过我反复的试验,bindinput触发了。bindinput,原来是它搞的鬼,为什么会触发bindinput?我就不清楚了,要问官方了。

点击清空按钮,同时触发了两个事件,两个同时存到了队列里面,虽然bindtap的方法还未执行,但是参数值已经有了,e.detail.value的值就是原本输入框里面的值。所以,执行完两个事件之后的结果是,input的值没有发生变化,导致大家以为,清空事件没有触发,或者清空事件没有作用。

原因找到了,点击清空的时候,触发了bindinput。为什么会触发呢,怎么让它不触发呢,这就留给小程序去解决吧,不是我们用户能解决的了。我们要解决的是,怎么实现input聚焦时能直接清空。

“只要思想不滑坡,办法总比困难多”。既然找到了原因,那解决办法肯定是会有的。我测试的时候发现,清空方法是比bingtap的方法先执行的,所以想到了一个解决方法:

在data里面声明一个boolean变量值为false,在执行清空方法的时候,赋值为:true,执行bindtap方法的时候,判断该变量,为true就不执行setData操作了,为false则继续。

代码:

这样做,就算清空方法不是比bingtap的方法先执行的,也不会有影响。简单测试了一下,解决了。

总结:以上就是我对input输入框清空bug的探索过程,解决方法也是我想到的最简单的做法了。因为没有经过大量测试验证,所以不知道会不会有其他问题。要是有bug,或者有其他解决方法,欢迎各位大大留言。

下图中的方法,试了一下,也管用。推荐大家尝试一下

如果觉得《html输入框重置 关于自定义input输入框清空方法bug的解决方案【转载】》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。