如何用JavaScript或jQuery拦截安卓数字软键盘「Go」按钮触发Web应用AJAX提交
解决方案
安卓软键盘的「Go」按钮触发逻辑和物理键盘回车键完全一致,可通过以下两种方案实现点击Go按钮触发提交,两种方案均可兼容绝大多数安卓机型:
方案1:直接监听输入框回车事件
直接给手机号输入框绑定按键事件,监听到对应按键时主动触发已有的Share按钮点击逻辑即可,无需修改原有HTML结构:
$('#shareNumber').on('keydown', function(e) { // keyCode=13对应物理回车键、安卓软键盘Go按钮 if (e.keyCode === 13) { // 阻止默认行为,避免软键盘异常收起或页面跳转 e.preventDefault(); // 复用已有提交逻辑,主动触发Share按钮点击 $('#sendShare').trigger('click'); } });
方案2:包裹为原生Form表单(兼容性更强)
将输入区域包裹在原生form标签内,软键盘的Go按钮默认会触发form的submit事件,该方案同时兼容iOS软键盘的「完成/前往」按钮,适配性更广:
修改后的HTML代码
<form id="shareForm"> <label>Recipient Phone Number<br> <small>Numbers only. Enter country code for international.</small> <input type="number" step='1' id="shareNumber"></label> <div id="sendShare">Share</div> </form>
配套JS代码
// 抽离公共提交逻辑,避免代码重复 function submitShare() { var phoneNumber = $('#shareNumber').val(); $.ajax({ url: url, type: 'POST', data: { phoneNumber: phoneNumber }, success: function(data) { // 原有业务逻辑 } }); } // 原有的点击Share按钮触发逻辑 $('#container').on('click','#sendShare',function(event){ // 注意原有代码这里漏了括号,已修正 event.preventDefault(); submitShare(); return false; }); // 监听form提交事件,对应软键盘Go按钮触发场景 $('#shareForm').on('submit', function(e) { e.preventDefault(); submitShare(); return false; });
额外注意
你原有代码里的event.preventDefault;漏写了括号,正确写法为event.preventDefault();,否则阻止默认行为的逻辑不会生效。
内容的提问来源于stack exchange,提问作者Jason
相关产品推荐
相关产品推荐

