UI使用的是Vant,使用的里面的form表单组件,在使用form表单提交的时候刷新了页面(安卓没问题,ios不行了)。查看源码时发现调了event.preventDefault();这个方法。
很显然event.preventDefault();这个方法没有生效,记得之前听别人说过这个方法在ios10以上的话是不好使的。想要深究的可以去看一下event.cancelable。w3c上面有说明。
解决方案:不使用form表单的按钮,自己写一个按钮,记住按钮的属性要设置成button,native-type=“button”。至于原因vant官方文档是这样说的:“这个问题的原因是浏览器中 button 标签 type 属性的默认值为submit,导致触发表单提交。我们会在下个大版本中将 type 的默认值调整为button来避免这个问题。”
如果不想写这个属性的话就把按钮拿出来,放在form表单外面,这样也不会有默认事件了。校验的话自己控制一下。虽然文档上没有自定义校验,但是通过error-message这个属性也可以实现。在网上搜vant自定义校验的话就能搜到,有位同学的文章中有写,我也是在他那里看的。
提示:说的不对请指出,有疑问欢迎提出来一起研究。