由于苹果的select会在底部弹出选择框,因此会页面过长会造成页面的滑动,从而二次触发焦点重新聚焦,导致焦点错位。 例子:
input
select
input
点击select后,会立即跳转为input,从而展示是输入框而不是选择框。
1.juqery解决,把select的滑动默认触发事件禁止
$('select').on('touchstart',function(e){
e.preventDefault();
})
2.修改fastCick.js文件
- A方法 找到以下代码
if(!deviceIsIOS || targetTagName !== 'select'){
this.targetElement = null;
event.preventDefault();
}
改为
this.targetElement = null;
event.preventDefault();
- B方法
FastClick.prototype.onTouchStart=function(event){
var targetElement,touch,selection;
if (event.targetTouches.length > 1) {
return true;
}
targetElement = this.getTargetElementFromEventTarget(event.target);
touch = event.targetTouches[0];
if (deviceIsIOS) {
//add by 我 解决select 点击老跳转的问题 begin
var nodeName = targetElement.nodeName.toLowerCase();
var typeAttribute = targetElement.getAttribute('type');
if (nodeName === "select"){
return false;
}
//add by 我 解决select 点击老跳转的问题 end`
...