Phi*_*p G 3 javascript jquery appjs
我在AppJs中制作了一个计算应用程序.
基本上它是一堆:
<input type=number>
Run Code Online (Sandbox Code Playgroud)
领域.
为了使它更友好,我认为我应该用点替换所有逗号,以便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(",","."));
}
});
Run Code Online (Sandbox Code Playgroud)
在资源管理器9中,这可以按预期工作:请参阅小提琴
但是,由于App.js使用铬,我猜这是铬中发生的事情.我该如何解决这个问题?
这是我的应用程序中发生的事情:当您输入包含逗号字符的数字时.逗号char移到右侧,当输入框失去焦点时,删除逗号(可能因为type = number中不允许使用逗号字符)
当您获得a的值<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(",","."));
}
});
Run Code Online (Sandbox Code Playgroud)
它会true每次打印.因此,你需要
因为,在keyup事件中,输入已经更改,您必须将其更改为a keydown或keypressevent.
更改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 + ".");
}
});
Run Code Online (Sandbox Code Playgroud)
<input type=text>如果您真的需要此功能,更好的想法可能是制作并手动验证.