Javascript 用点字符替换逗号
我在AppJs中制作了一个计算应用程序 基本上是一堆:Javascript 用点字符替换逗号,javascript,jquery,appjs,Javascript,Jquery,Appjs,我在AppJs中制作了一个计算应用程序 基本上是一堆: <input type=number> 在资源管理器9中,这项功能按预期工作: 但是由于App.js使用了chromium,我想这是chromium中发生的事情。我怎样才能解决这个问题 这就是我的应用程序中发生的情况: 输入包含逗号字符的数字时。逗号字符移到右侧,当输入框失去焦点时,逗号将被删除(可能是因为type=number中不允许使用逗号字符)最好不要弄乱输入字段中的实际数据,而是在读取之前重新设置内部格式,通过如下
<input type=number>
在资源管理器9中,这项功能按预期工作:
但是由于App.js使用了chromium,我想这是chromium中发生的事情。我怎样才能解决这个问题
这就是我的应用程序中发生的情况:
输入包含逗号字符的数字时。逗号字符移到右侧,当输入框失去焦点时,逗号将被删除(可能是因为type=number中不允许使用逗号字符)最好不要弄乱输入字段中的实际数据,而是在读取之前重新设置内部格式,通过如下getter访问值:
var getInputNumber = function(inputid) {
return $(inputid).val().replace(",", ".");
};
当您获得
的值但该值无效时,将返回一个空字符串。您可以通过执行以下操作进行检查:
$("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
事件值。将(“,”,“)
替换为值+”
(因为将不存在”,“
)$("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 + ".");
}
});
如果确实需要此功能,最好将其设置为
并手动验证。当您获得输入类型=数字的值
但该值不是有效数字时,您会得到一个空字符串。(”
)当您使用var value=$(this).val()
(输入更改后,它可能是空的)。使用您的解决方案:当我尝试写入“1,5”时,当点击逗号字符时,整个输入被擦除,只留下5。我真想不通!我发现了问题。出于某种原因,多次触发了keydown事件。因此,添加e.stopImmediatePropagation();解决了这个问题。现在它像手套一样工作!谢谢
$("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 + ".");
}
}
});
$("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 + ".");
}
}
});