html5输入法完成事件,【已解决】HTML中如何获取输入框的输入法的搜索或完成按钮的事件...

现在已经实现了一个web网页的输入框,然后点击搜索:

2a900f5adf5c94f1b12da8a59f211fe8.png

但是现在想要实现:

在手机端,当输入内容时,所弹出的输入法,用户点击 搜索 Done 完成 之类按钮时,能否获取对应事件,触发搜索

即:键盘中 完成键 触发 搜索

6d11036234a8dc552761ead9a60b8535.png

希望点击 搜索 可以捕获到,触发搜索

html keyboard done event

html input keyboard done event

用代码:$('#inputQuery').bind("keypress", function(e){

console.log("inputQuery keypress: e=%o", e)

// enter key code is 13

if(e.which === 13){

console.log("user pressed done");

}

})

发现是可以获取到Enter键的:

aa4a715d762c857ab8d3a441570ca263.png

感觉这几个值最有用:key: "Enter"

keyCode: 13

type: "keypress"

which: 13

然后

放到在线页面中,此处:

Mac的Chrome中可以正常work的

但是Mac的Safari中不行,

Android和iOS也都不行

不知道是否是缓存问题?

难道是:

keypress bind 对于Safari无效?

对移动端浏览器都无效?

jquery bind keypress not working

过了会,Mac中Safari中工作了:

89440347b0cc067ffad3656d18246c81.png

Mac中Safari模拟iOS也是可以的:

6256bc2b7d64452458a9e39933cd628a.png

看到检测,感觉有点怪:

if(keycode == ’13’){

不是数字13,而是字符串13

再去调试:

此处的确是数字13,不是字符串:

b75a005f1f70eeb408c25d10478f46c7.png

数字此处是N,字符串是S

所以现在是PC端浏览器都可以支持keypress

但是移动端浏览器iOS或Android都不支持

继续调试发现:

Android端Chrome浏览器是支持的keypress的:

d408451f338563fe5f42bb42de14597a.png

jquery mobile keypress not working

Jquery: not working in Mobile’s browser where as working in Windows7’s browser in laptop | The ASP.NET Forums

keypress not working mobile

keypress not working ios

换keydown试试

然后试了:// $('#inputQuery').bind("keypress", function(e){

// $('#inputQuery').bind("keydown", function(e){

$('#inputQuery').on("keydown", function(e){

移动端 尤其是ios的Safari都不行

ios safari soft keyboard press

ios safari soft keyboard press event

这里也提到了:

iOS和Android中的浏览器,是无法检测到:弹出的键盘中点击了Done或Submit 的

而只能:

而可以想办法检测到:焦点消失

对应着有两种办法:focusout

onblur

不过不是我们要的效果,所以不去管

【总结】

目前结论是:PC端:

Mac

Chrome,Safari:都可以正常检测到keydown,keypress等事件

Chrome模拟iOS,Safari模拟iOS:也可以检测到

移动端:

iOS的Safari:检测不到

Android

普通浏览器:检测不到

Chrome:可以检测到

iOS或Android的微信浏览器:

都检测不到

【后记】

过了1天之后,突然发现:

微信打开网页,内部用的是微信自带浏览器,也支持:

在输入框 输入了内容后 点击 此处的:换行

46dfc634113ff34db7ffd6a4855db874.png

然后是可以触发搜索了。

-》即内部是可以通过上述代码:// $('#inputQuery').bind("keypress", function(e){

// $('#inputQuery').bind("keydown", function(e){

$('#inputQuery').on("keydown", function(e){

console.log("inputQuery on keydown: e=%o", e)

// // for debug

// $("#submitQuery").text(`on:${e.keyCode}-${e.which}`)

// if(e.which === EnterKeyCode){

if (e.keyCode === EnterKeyCode){

console.log("user pressed done/enter")

ajaxSubmitQuery()

}

})

去捕获到,软键盘中点击了 回车/换行/完成/搜索 等按钮的

对应是完成的键,keyCode是13。

从而可以去出发搜索动作了。

【心得】

微信的浏览器的缓存问题,很是坑爹。

其实昨天代码都对,但是就是页面无法刷新,有缓存,导致有问题。

现在页面更新了,没缓存问题了,就正常显示了。

所以以后如果再去调试代码,记得如果不能及时显示,可能是微信浏览器缓存问题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值