Ios 在数字类型的输入中使用货币符号和逗号
输入美元货币值的最佳iOS键盘(如下图所示)包括数字0-9、十进制符号、逗号符号和美元符号。据我所知,在Mobile Safari上使用此键盘的唯一方法是使用Ios 在数字类型的输入中使用货币符号和逗号,ios,validation,keyboard,mobile-safari,Ios,Validation,Keyboard,Mobile Safari,输入美元货币值的最佳iOS键盘(如下图所示)包括数字0-9、十进制符号、逗号符号和美元符号。据我所知,在Mobile Safari上使用此键盘的唯一方法是使用 不幸的是,iOS目前有内置的数字输入类型验证功能,可以屏蔽逗号和美元符号。由于此验证“功能”嵌入到浏览器中,并且Mobile Safari尚未实施novalidate指令,因此目前无法手动执行此验证 使用显然可以解决验证问题,但它也会带来常规的alpha键盘,这对于我当前的项目(金融计算器)来说是不可接受的 我即将做一些疯狂的事情,比如在
不幸的是,iOS目前有内置的数字
输入类型验证功能,可以屏蔽逗号和美元符号。由于此验证“功能”嵌入到浏览器中,并且Mobile Safari尚未实施novalidate
指令,因此目前无法手动执行此验证
使用
显然可以解决验证问题,但它也会带来常规的alpha键盘,这对于我当前的项目(金融计算器)来说是不可接受的
我即将做一些疯狂的事情,比如在输入
获得焦点后,使用JavaScript将类型
从数字
快速切换到文本
。我在抓救命稻草。有什么想法吗
您可以将输入字段的属性
模式
用作文本。这将指示mobile safari打开数字键盘。尝试以下几点:
<input type="text" pattern="\d*" />
只需将您的模式正则表达式更改为您想要的
这是
更新
看了之后,你似乎不走运了。要想做你想做的事情,你必须使用一些javascript魔法。目前,javascript是唯一的解决方案。下面是最简单的方法(使用jQuery): HTML
<input type="text">
这个想法很简单。输入以type=“text”
开始并结束,但在touchstart
事件中短暂变为type=“number”
。这将导致出现正确的iOS键盘。一旦用户开始输入任何输入或离开该字段,输入将再次变为type=“text”
,从而避免验证
这种方法有一个缺点。当用户返回到已填写的输入时,输入将丢失(如果未验证)。这意味着用户将无法返回并编辑以前的字段。在我的例子中,这并不是那么糟糕,因为用户可能想用不同的值反复使用计算器,所以自动删除输入将节省一些步骤。但是,这可能并非在所有情况下都是理想的。是的,我知道
模式
属性。苹果的文档特别提到了两种模式,它们都显示数字键盘(几乎与电话键盘相同)。数字键盘不是一个选项,因为它甚至不包含十进制(对于金融计算器来说是必需的),也没有显示更多字符的机制。我不知道有任何其他受支持的模式(我已经尝试了几个,但我在黑暗中拍摄)。我已经更新了答案。我确实尝试了不同的模式,这些模式应该满足您的需求,但mobile safari只是忽略了这些模式,并提供了常规键盘。
$('input[type="text"]').on('touchstart', function() {
$(this).attr('type', 'number');
});
$('input[type="text"]').on('keydown blur', function() {
$(this).attr('type', 'text');
});