这是我的代码。我试图用格式化的数字动态更新输入字段。
$("#money").keyup(function() {
var x = this.value;
var y = parseInt(x).toLocaleString();
this.value = y;
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id='money' />
谢谢!
编辑:更改为类型=“文本”仍然相同的结果。我确实需要包含这种格式。当我使用控制台查看输出时,它按预期工作。
如果要用逗号显示数字,则不能使用type="number"
,它只允许使用普通数字。所以使用type="text"
。
但如果数字有逗号,parseInt()
将无法解析它。在解析之前从输入中删除所有非数字字符。
$("#money").keyup(function() {
var x = $(this).val().replace(/\D/g, '');
var y = parseInt(x).toLocaleString();
$(this).val(y);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id='money' />
既然你正在使用toLocaleString
,你是否想要实现像123,34这样的格式化输出?
如果是,那么当你得到你的格式化输出并做下一个
keyup
时,parseInt
将再次尝试解析数字,你会得到NaN
。所以你的textbox
空白。
您已经在使用jquery,为什么不这样做:
$("#money").keyup(function() {
var x = $(this).val();
var y = parseInt(x);
$(this).val(y);
});
我也试过qazxsw poi而不是qazxsw poi,4个输入后文本框不会变成空白。
var y = x.toLocaleString();
首先禁止使用非数字字符,但您可以使用文本字段。
现在,随着格式的开始,你的值会丢失,因为parseInt
会在遇到非数字字符时立即停止解析。要解决此问题,您可以在调用input type=number
之前删除格式。
此外,在事件处理程序中,您可以通过parseInt
关键字访问该字段。您不需要设置其他变量。
parseInt()
this