移动端web开发之坑--IOS8下 上传图片点击取消后,弹出了软键盘遮挡输入框

【问题描述】:
点击输入框弹出软键盘–>点击上传图片(input type=file)–>此时键盘收起 弹出上传图片/拍照/取消选项–>点击取消–>选项消失,键盘弹起–>遮挡(如图二)

这里写图片描述

这里写图片描述

【心路历程】
1.一开始考虑的就是捕获到那个取消的动作,然而input file点击取消的时候内容没改变,并不会触发change
事件。而且,我在触发input file之前,绑了一个alert,关闭弹窗后依旧有软件盘(这是另一部ios8手机上的表现,所以点击取消只是诱因吧,起一个阻塞的作用,软键盘该出还出来);
2.软键盘与当然与focus、blur事件有关,于是我给所有的input、textarea绑上了focus、blur事件,alert事件名和类名,以此标记。然而之后软件键盘的弹出和收起并不会触发任何的focus、blur事件。(我开始怀疑人生了。。。难不成是input file,可是它又没有focus。。);
3.我想竟然我不能通过blur事件把软件盘收回去,那我就判断键盘是否弹出,把输入框抬上来好了。然而键盘弹出,在ios上并不能触发resize事件。。(我能怎么办,我也很绝望啊)
4.难道是客户端的锅?于是又去找了ios的开发,他告诉我这锅不是他的是系统的锅。。我想,难道是系统还没反应过来,以为没收回去,于是加了个延迟触发,然后。。改好了。。

【解决】
给inpu file的父框绑一个click事件,然后延迟300ms去触发 input file;

$('#parent').click(function(){
        setTimeout(function(){
            $('input.pic').trigger('click');
    });
});

【总结】
①只用input[type=file],内容变化的时候才会触发change事件;
②input file,没有focus事件;
③键盘弹出,在ios上并不能触发resize事件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值