繁体   English   中英

jQuery代码可在Firefox,Opera中使用,但不能在Chrome和IE中使用

[英]JQuery Code works in Firefox, Opera but not working in Chrome and IE

我有以下代码可在Firefox-20和Opera中使用,但不能在Chrome-26或​​IE-10中使用。 键入功能将印度逗号添加到金额中。

$(document).ready(function() {
    $("#readyArea").on('change', function() {
        $("#underConstArea").val($(this).val()).trigger('change');
    });

$('.comma').on('keyup', this, function commaFormatted(){
        var delimiter = ","; // replace comma if desired
        var amount = $(this).val().replace(/\,/g,'');
        var a = amount.split('.',2);
        var d = a[1];
        var i = parseInt(a[0],10);
        if(isNaN(i)) { return ''; }
        var minus = '';
        if(i < 0) { minus = '-'; }
        i = Math.abs(i);
        var n = new String(i);
        var a = [];
        var cnt=0;
        while(n.length > 2)
        {
            if(cnt == 0)
            {
                var nn = n.substr(n.length-3);
                n = n.substr(0,n.length-3);
                cnt++;
            }
            else
            {
                var nn = n.substr(n.length-2);
                n = n.substr(0,n.length-2);
            }
            a.unshift(nn);
        }
        if(n.length > 0)
        {
            a.unshift(n);
        }
        n = a.join(delimiter);
        amount = n;
        amount = minus + amount;
        $(this).val(amount);
    });
});

这是JSFiddle 链接 (正如我说过的,如果我在Firefox或Opera中打开此链接,则js有效,但在Chrome或IE中则无效)。 控制台上也没有js错误。 我需要针对Chrome和IE做一些特定的事情吗?

编辑

需要澄清的是,onChange事件并未在Chrome和IE中触发。 在Firefox和Opera中也是如此。

我在Chrome上进行了测试,但逗号效果很好,但是我从未看到underConstArea更新,而在离开文本框后,我确实在Firefox上看到了更新。

我不确定那里发生了什么,但是我有几种解决方法。

首先,似乎$("#readyArea").on('change')触发取决于浏览器。 我不知道为什么,但是当您更改代码时,Chrome似乎不会引发更改事件。 也许它正试图避免变化的无限循环。 我不太确定

如果您对underConstArea仅在数字完成后更新感到满意(因为它在firefox中focusout ),则可以在focusout而不是change 我将您的顶行更改为

$("#readyArea").on('focusout', function() {
    $("#underConstArea").val($(this).val());
});

在Chrome和Firefox中对我来说效果很好。 是更新的小提琴。

另外,如果你想它来更新每个用户的类型时,只需更新underConstArea你的内commaFormatted功能。 只需添加

$("#underConstArea").val(amount);

在功能的底部。 以及指向我提供的第二个选项的链接 请注意,我删除了#readyArea#readyArea所有事件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM