Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/111.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在数字类型的输入中使用货币符号和逗号_Ios_Validation_Keyboard_Mobile Safari - Fatal编程技术网

Ios 在数字类型的输入中使用货币符号和逗号

Ios 在数字类型的输入中使用货币符号和逗号,ios,validation,keyboard,mobile-safari,Ios,Validation,Keyboard,Mobile Safari,输入美元货币值的最佳iOS键盘(如下图所示)包括数字0-9、十进制符号、逗号符号和美元符号。据我所知,在Mobile Safari上使用此键盘的唯一方法是使用 不幸的是,iOS目前有内置的数字输入类型验证功能,可以屏蔽逗号和美元符号。由于此验证“功能”嵌入到浏览器中,并且Mobile Safari尚未实施novalidate指令,因此目前无法手动执行此验证 使用显然可以解决验证问题,但它也会带来常规的alpha键盘,这对于我当前的项目(金融计算器)来说是不可接受的 我即将做一些疯狂的事情,比如在

输入美元货币值的最佳iOS键盘(如下图所示)包括数字0-9、十进制符号、逗号符号和美元符号。据我所知,在Mobile Safari上使用此键盘的唯一方法是使用

不幸的是,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');
});