【问题标题】:autoNumeric won't allow decimal input from numeric keyboard / Internet ExplorerautoNumeric 不允许从数字键盘/Internet Explorer 输入十进制
【发布时间】:2018-05-05 14:10:20
【问题描述】:

我用这些设置在输入字段上设置了autoNumeric

[
    {"digitGroupSeparator" : ""},
    {"decimalCharacter" : ","},
    {"modifyValueOnWheel" : false},
    {"minimumValue" : "0"}
]

小数点分隔符是逗号。在常规键盘上按下逗号时,它会按原样出现在输入字段中。但是,在数字键盘上按下时,什么也没有出现。这仅在 IE 上发生,在 Chrome/FF 上它可以正常工作,出现逗号。

我在这个服务上测试了 IE 和 Chrome 的 JavaScript 代码:http://unixpapa.com/js/testkey.html

它们是相同的。普通键盘逗号按:

keydown  keyCode=188       which=188       charCode=0        
keypress keyCode=44  (,)   which=44  (,)   charCode=44  (,)  
keyup    keyCode=188       which=188       charCode=0 

数字键盘逗号按下:

keydown  keyCode=110 (n)   which=110 (n)   charCode=0        
keypress keyCode=44  (,)   which=44  (,)   charCode=44  (,)  
keyup    keyCode=110 (n)   which=110 (n)   charCode=0   

这应该作为一个错误提交给 autoNumeric 吗?它也应该接受来自数字键盘的分隔符。有什么可能的解决方法吗?

编辑:这是一个要测试的 JSFiddle:https://jsfiddle.net/g1wumdt7/3/

【问题讨论】:

  • 提供 sn-p 或 fiddle 总是有助于检查与问题相关的任何问题。
  • 已添加 JSFiddle。
  • 您的数字键盘有逗号分隔符吗?小提琴似乎在 chrome 上运行良好。您没有错误地将 digitGroupSeparator 与 decimalCharacter 交换是吗?如果脚本有 IE 的错误,您可能可以使用默认的点分隔符作为 decimalCharacter,然后在您想使用它时用逗号替换它
  • 是的,数字键盘底行的零旁边有一个逗号。在普通文本输入上按下它也会在 IE 上输出,。它仍然在应该允许 , 的 autoNumeric 输入上输出任何内容

标签: javascript jquery


【解决方案1】:

使用"decimalCharacterAlternative": ".",它可以在按下时替代您的主要十进制字符。

这里有更多options

var anSettings = {
  "digitGroupSeparator" : "",
  "decimalCharacter" : ",",
  "modifyValueOnWheel" : false,
  "minimumValue" : "0",
  "decimalCharacterAlternative": "."
};
AutoNumeric.multiple('.an', anSettings);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/autonumeric/4.1.0/autoNumeric.min.js"></script>
<input type="text" value="" class="an">

更新:感谢@Alex,将 AutoNumeric 添加到多个字段使用AutoNumeric.mulitple

【讨论】:

  • 这行得通,但我真的不明白为什么。数字键盘上的键输出逗号“,”也在 IE 上,而不是点“。”所以添加一个点作为decimalCharacterAlternative 应该没有任何区别。
  • @lofihelsinki 这是 AutoNumeric 权利的功能,您将 decimalCharacter 指定为 , 并且没有分组分隔符。所以它会这样工作。你能举一些例子,你想得到什么输出?
  • 当然,但我不明白为什么 IE 不从其他浏览器的数字键盘输出,。在我们的 kb 布局中,数字键盘中有,。所以在 IE 中输入 1234,56 输出 123456,在 Chrome 和 FF 上输入 1234,56。对我来说似乎仍然是 autoNumeric 中的一个错误。 . 不应该与它有任何关系。根本没有按任何. 键。
  • @lofihelsinki 我无法检查你的情况,我的小键盘上是period (.)。
  • 我猜它是逗号在小数点分隔符在逗号中的国家,即芬兰键盘:docs.oracle.com/cd/E19683-01/806-6642/images/BR.finnish.tif.gif 可以通过更改本地化设置中的 kb 布局来测试它:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-15
  • 2013-09-28
  • 1970-01-01
  • 2016-03-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多