我在AppJs中制作了一个计算应用程序。
基本上它是一堆:
<input type=number>
字段。
为了使它更加用户友好我认为我应该用点替换所有逗号,以便javascript可以使用实际值来计算。
我尝试过以下代码:
$("input[type=number]").keyup(function(e){
var key = e.which ? e.which : event.keyCode;
if(key == 110 || key == 188){
e.preventDefault();
var value = $(this).val();
$(this).val(value.replace(",","."));
}
});
在资源管理器9中,这可以按预期工作:see fiddle
但是,由于App.js使用铬,我猜这是铬中发生的事情。我该如何解决这个问题?
这是我的应用中发生的事情: 输入包含逗号字符的数字时。逗号字符向右移动,当输入框失去焦点时,将删除逗号(可能是因为type = number中不允许使用逗号字符)
答案 0 :(得分:6)
当您获得<input type=number>
的值但它无效时,则返回空白字符串。你可以这样做:
$("input[type=number]").keyup(function(e){
var key = e.which ? e.which : event.keyCode;
if(key == 110 || key == 188){
e.preventDefault();
var value = $(this).val();
console.log(value === "");
$(this).val(value.replace(",","."));
}
});
每次都会打印true
。因此,您需要
由于在keyup
事件中输入已更改,因此您必须将其更改为keydown
或keypress
事件。
将value.replace(",", ".")
更改为value + "."
(因为没有","
)。
完成的代码:
$("input[type=number]").keydown(function (e) {
var key = e.which ? e.which : event.keyCode;
if (key == 110 || key == 188) {
e.preventDefault();
var value = $(this).val();
console.log(value);
$(this).val(value + ".");
}
});
更好的想法可能是让它<input type=text>
并在需要此功能时手动验证。
答案 1 :(得分:1)
最好不要混淆输入字段中的实际数据,而是在读取之前在内部重新格式化,通过这样的getter访问值:
var getInputNumber = function(inputid) {
return $(inputid).val().replace(",", ".");
};
答案 2 :(得分:0)
$("input").keydown(function (e) {
var key = e.which ? e.which : event.keyCode;
if (key == 110 || key == 188) {
var value = $(this).val();
if (!isNaN(value)) {
e.preventDefault();
$(this).val(value + ".");
}
}
});