用正则表达式替换Javascript在IE 11中不起作用



由于我的公司正试图从IE8升级到IE11,我的一些遗留代码出现了一些javascript问题。我有一段javascript,它可以找到字段中的所有逗号,并用几个字符替换它,如下所示:

document.frm.txt_fieldValue[1].value = 
document.frm.txt_fieldValue[1].value.replace(/,/gi, "$0");

然而,在我的代码中,这一切都在一行上。此代码适用于IE8、Chrome和Firefox。然而,在IE9+,特别是IE11(因为这是我公司正在升级的版本)中,此代码不会替换任何逗号。我可以使用以下代码来替换单个逗号:

document.frm.txt_fieldValue[1].value = 
document.frm.txt_fieldValue[1].value.replace(",", "$0");

因为我替换了一个逗号,所以我知道我的代码已经到达了。但我四处寻找,还没有找到一个确切的答案。其他人有这个问题吗?如果是,有人找到解决方案了吗?

谢谢!

您需要将其替换为"$$0",转义后它将变成真正的$0。我怀疑这段代码是否在任何浏览器上都能正常工作。

我最近修复了一个可能会有所帮助的错误。

如果你要替换的值是0——作为一个值,而不是一个字符串——IE11只会附加替换字符串,而不是实际替换它

以下是我使用的内容:

buf = buf.replace( /%%TOTALAMOUNT%%/gim, "$" + parseFloat( g_UserPurchases[LCV].CurrencyValue.val() ).toFixed(2) );                        

打印:"%%TOTALAMOUNT%%.00"

我通过检查修复了它:

if( ( g_UserPurchases[LCV].CurrencyValue.val() == 0 ) || ( g_UserPurchases[LCV].CurrencyValue.val() === 0 ) ){
//IE fix: IE did not like the $ character and didn't replace if val = 0
buf = buf.replace( /%%TOTALAMOUNT%%/gim, "$0.00");    }

请注意:IE11没有替换美元符号字符$。因此,我使用了字符代码:

$

希望这能有所帮助!

最新更新