我试图让我的输入字段用逗号强制2个小数位,当我按下“5”键六次时,这是一个样本。
0,05
0,55
5,55
55,55
555,55
5555,55
我搜索了很多,但我能做的最好的事情是这样的:
<script type="text/javascript">
$("#inputID").on('blur change' , function() {
$(this).val(parseFloat($(this).val()).toFixed(2))
}).trigger('blur');
</script>
有可能吗?
答案 0 :(得分:0)
从输入中删除小数点,除以100
,然后将其格式化为2位小数。
使用input
事件,这样就会在用户输入时发生,而不仅仅是在他们离开输入时。
$("#inputID").on('blur change input', function() {
$(this).val(function(i, input) {
input = input.replace(/\D/g, '');
return (input / 100).toFixed(2);
});
}).trigger('blur');
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="inputID">
&#13;
答案 1 :(得分:0)
如果昏迷是小数分隔符的要求,这是一种方法。
请注意,点在用户输入时也会有效,在模糊时会被更改为昏迷。
$("#inputID").on('blur' , function() {
var value = parseFloat($(this).val().replace(",","."));
$(this).val(value.toFixed(2).replace(".",","))
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="inputID">
&#13;
答案 2 :(得分:0)
在您更接近(我稍后会再回到)之前,您需要解决几件问题:
blur
和change
事件触发更改,这两项事件都是在文本输入失去焦点后发生的,不是,因为用户正在键入。对于您正在尝试的操作,keyup
事件可能是最佳选择(即,释放键盘键时触发的事件)。parseFloat($(this).val()).toFixed(2)
中的一个步骤。 。 。你有什么收获价值并将其直接转换为数字(例如,“5”变为5)。要获得所需的行为,您需要做的是将该值除以100(例如,“5”变为0.05)。为此,请将代码更改为:(parseFloat($(this).val()) / 100).toFixed(2)
,
而不是.
作为小数点分隔符,请对更新后的代码的结果使用字符replace
:(parseFloat($(this).val()) / 100).toFixed(2).replace('.', ',')
然而。 。 强>
将值更新为输入后,您将遇到几个问题:
当然有很多方法可以解决这些问题,但是在你最终获得跨浏览器兼容的东西之前,它们会给你带来很多麻烦(这会有所不同,具体取决于你想要支持哪些浏览器)。如果可以选择,您可能需要考虑坚持使用“后加入”blur
/ change
方法。