聚焦 <input> 时防止 iPhone 默认键盘

IT技术 javascript jquery iphone keyboard
2021-02-21 05:45:29

这就是我正在尝试的方式

<script type="text/javascript">
     $(document).ready(function(){
        $('#dateIn,#dateOut').click(function(e){
            e.preventDefault();
        }); 
     });
</script>

但输入仍然“启动” iphone 的键盘

ps:我想这样做是因为我正在使用 datepicker 插件进行日期

6个回答

通过将属性readonly(或readonly="readonly"添加到输入字段,您应该防止任何人在其中输入任何内容,但仍然能够在其上启动单击事件。

当您使用日期/时间选择器时,这在非移动设备中也很有用

-1 因为这不是一个非常健壮的方法。输入在技术上不是“只读”,因此诸如自动制表(使用 tabindex="x")之类的东西不适用于此
2021-04-21 05:45:29
嗯!谢谢!但是日期选择器能够设置选择的值吗?
2021-04-28 05:45:29
Tabindex 似乎对我仍然有效。但是我无法使用,readonly因为某些小部件不会在readonly输入上绑定事件
2021-05-06 05:45:29
是的,它会的。Readonly 仅适用于用户,不适用于 JavaScript。
2021-05-08 05:45:29
请注意: readonly 是一个布尔 HTML 属性,这意味着它的存在表示该值。你只需要“只读”,而不是“只读={true|readonly|etc}”
2021-05-09 05:45:29

输入模式属性

<input inputmode='none'>

inputmode全局属性是一个枚举属性,在可能的同时用户编辑元素或其内容输入数据的类型提示。它可以具有以下值:

none- 没有虚拟键盘。当页面实现自己的键盘输入控件时。


我成功地使用了这个(在Chrome/Android上测试

CSS-Tricks:关于输入模式你想知道的一切

这应该被接受!
2021-05-05 05:45:29
这是问题的正确解决方案,而不是只读选项
2021-05-10 05:45:29
+1 这是一个更好的解决方案,尤其是在 ASP.Net Web 应用程序上。Readonly 恰好是一个控件属性,因此输入 readonly='readonly' 会导致验证错误。
2021-05-11 05:45:29

您可以向 DatePicker 添加回调函数,以告诉它在显示 DatePicker 之前模糊输入字段。

$('.selector').datepicker({
   beforeShow: function(){$('input').blur();}
});

注意:iOS 键盘将出现几分之一秒然后隐藏。

到目前为止对我来说最好的答案。我几乎要放弃这个了。
2021-04-23 05:45:29
谢谢,这也适用于安卓。对于android它甚至没有出现
2021-05-02 05:45:29
绝妙而优雅的技巧,谢谢。它适用于 iPhone + Android 在这里。
2021-05-11 05:45:29
在android中对我不起作用..键盘仍然弹出
2021-05-13 05:45:29

下面的代码对我有用:

<input id="myDatePicker" class="readonlyjm"/>


$('#myDatePicker').datepicker({
/* options */
});

$('.readonlyjm').on('focus',function(){
$(this).trigger('blur');
});

由于我无法对最高评论发表评论,因此我被迫提交了“答案”。

所选答案的问题在于将字段设置为只读会使该字段脱离 iPhone 上的 Tab 键顺序。因此,如果您喜欢通过点击“下一步”来输入表单,您将直接跳过该字段。

@JohnVance 即使设置了 tab-index 属性也是如此吗?或者这会覆盖效果吗?(我问是因为我没有 iPhone,但希望得到知识)
2021-04-18 05:45:29
这是有道理的,只读不会让用户更改值(仅限 javascript)所以我想它很自然地跳过它
2021-04-23 05:45:29
但是,在我测试过的桌面浏览器(包括 Safari/mac)上,tab 键会将您带到只读字段。
2021-04-25 05:45:29
@FernandoSilva 我已经在 iPhone Safari 上测试过这个,使用 tab-index 你仍然会跳过这个字段。
2021-05-08 05:45:29