Javascript 用点字符替换逗号

Javascript 用点字符替换逗号,javascript,jquery,appjs,Javascript,Jquery,Appjs,我在AppJs中制作了一个计算应用程序 基本上是一堆: <input type=number> 在资源管理器9中,这项功能按预期工作: 但是由于App.js使用了chromium,我想这是chromium中发生的事情。我怎样才能解决这个问题 这就是我的应用程序中发生的情况: 输入包含逗号字符的数字时。逗号字符移到右侧,当输入框失去焦点时,逗号将被删除(可能是因为type=number中不允许使用逗号字符)最好不要弄乱输入字段中的实际数据,而是在读取之前重新设置内部格式,通过如下

我在AppJs中制作了一个计算应用程序

基本上是一堆:

 <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 + ".");
                    }
                }
            });