【发布时间】:2018-04-05 21:26:59
【问题描述】:
注意:我知道这与其他问题相似,但出于语义和其他原因(例如 iOS 上的输入方便),我特别希望 HTML 输入为 type="number"。这就是问题所在......
我正在尝试设置一个 HTML 表单,以便数字字段显示数千个逗号——例如“10,000,000”而不是“10000000”。我想设置它,以便该字段显示逗号,但是当它获得实际编辑的焦点时,逗号消失了。
我可以手动将逗号添加到值中,没有任何问题(我主要在 Firefox ~59 中进行测试);但是每当我尝试让 JavaScript 添加逗号时,该字段就会被空白。有谁知道如何进行这项工作?
(注意,我在这里使用 Numerals.js 进行格式化...http://numeraljs.com/)
这是我所拥有的:
$(document).ready(function(){
var numberFields = $("input[type=number]");
numberFields.each( function(){
$(this).val( numeral( $(this).val() ).format('0') );
});
numberFields.focus( function(){
$(this).val( numeral( $(this).val() ).format('0') );
});
numberFields.blur( function(){
$(this).val( numeral( $(this).val() ).format('0,0') );
});
});
HTML 输入示例:
<input name="myField" value="0" type="number">
(顺便说一句——而且很方便,我已经确认向 HTML 表单处理脚本提交带逗号的数字只会删除逗号并将未格式化的数字放入数据库中。太好了!)
【问题讨论】:
-
如果您使用 HTML 类型的输入,您必须接受用于数字解析的 HTML 规则。这些不允许使用逗号。
-
是的,我知道。我已经注意到,如果您将光标放在字段中并且只是普通类型的逗号,它就可以接受这些。希望 JS 可以通过某种方式完成我可以用键盘完成的工作......
-
使用
type="text" pattern="[0-9,]*"将其限制为带逗号的数字。 -
是的,您可以在字段中输入您想要的内容,但是当您的表单被发布或您从 JavaScript 访问
.value时,您什么也得不到。我同意这是不令人满意的行为。 -
你也可以使用Javascript表单验证。
标签: javascript jquery html formatting