由于我的公司正试图从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 :(得分:2)
您需要将其替换为“$$ 0”,转义后将变为真实的$0
。我怀疑这个代码是否在任何浏览器上都能正常工作。
答案 1 :(得分:1)
我最近修复了一个可能有帮助的错误。
如果您要替换的值为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没有替换美元符号字符$。所以,我改为使用了字符代码:
$
希望这有帮助!