功能:
ios表单验证时,比如 输身份证号,失焦后验证身份证,如果不合法,就让光标跳到对应的输入框,我是不合法就调用focus方法,完了会跳过去,但是ios有个bug,它确实会定位到对应的输入框,而且会弹出软键盘,输入框可以输入,但是刚跳过去时,看不见光标,要改变输入框内容后才会显示光标,体验非常不好。
问题表述:
ios手机端 表单input调用focus方法时,光标不显示,但软键盘会弹出来,可以修改内容,需要修改内容后光标才显示;
问题解决:
在网上找了很多解决办法,例如修改user-select:text等等,但是都不行,所有只能换一种思路去解决,不算真正意义上的解决;上面提到了,需要修改内容后光标才会显示,那么我们就通过js去修改内容;
尝试①:调用focus()方法后,手动获取输入框的值,再赋给输入框。 --失败
我猜测赋值要不一样才会出现光标;所以尝试②;
尝试②:调用focus()方法后,手动获取输入框的值,先清空输入框的值,再赋给输入框。 --成功
但这样有时候还是会不显示光标,我猜测有可能是因为 清空的操作和赋值的操作太快了---导致可能比较像尝试①的情况
所以决定在赋值原内容是加一个定时器,使其延迟100ms再执行,问题就解决了。
以上也不是从源头去解决的,而是投机取巧。