On键,输入值后如何添加小数值?
对于ex:我输入值10结果应该是10.00。
如果我加10.50结果应该是10.50。我怎么能实现这个?
Jquery Demo Fiddle
$("#txtQty").keyup(function() {
var $this = $(this);
$this.val($this.val().toFixed(2));
});
答案 0 :(得分:3)
使用parseFloat
,然后toFixed
$this.val(parseFloat($this.val()).toFixed(2));
此外,最好使用change
而不是keyup
,因为keyup
不允许在文本框中途更改值
$("#txtQty").change(function() {
var $this = $(this);
$this.val(parseFloat($this.val()).toFixed(2));
});
答案 1 :(得分:1)
您必须先转换为float
,然后使用toFixed
在小数点后添加两位数。
此外,您应该使用keyup
事件代替blur
事件。
试试这个:
$this.val(parseFloat($this.val()).toFixed(2));
答案 2 :(得分:0)
$(this).val(parseFloat($(this).val()).toFixed(2));
(or)
$(this).val(Number($(this).val()).toFixed(2));
答案 3 :(得分:0)
我知道这更像是一种矫枉过正,但建议的解决方案看起来并不整洁(字母闪烁,NaN,当你输入字母时等)。
试试这个:
$("#txtQty").keypress(function(e) {
var keyCode = e.keyCode || e.which;
if ([8, 9, 13, 37, 39, 46].indexOf(keyCode) != -1) {
// backspace, tab, enter, left-array, right-arrow, delete
return;
}
var input = $(e.target || e.srcElement);
var regex = /^[0-9]+[.,]{0,1}[0-9]{0,2}$/;
var key = String.fromCharCode(keyCode);
var selection = input.getSelection();
var stringPart1 = input.val().substring(0, selection.start);
var stringPart2 = input.val().substring(selection.end, input.val().length);
var newValue = stringPart1 + key + stringPart2;
if (!regex.test(newValue)) {
e.returnValue = false;
if (e.preventDefault) e.preventDefault();
}
});
此代码可防止输入会导致违反正则表达式的符号,因此显示始终为 00.00 格式。
此代码需要jQuery和rangyinputs微型jQuery插件来管理用户选择。但是如果你愿意,你可以为此编写自己的代码,或者只是在文本框中放弃(或禁止)范围选择。
祝你好运。