0

我正在尝试以 javascript 形式进行简单的替换。

该表格正在向外部支付网关提交发票编号和金额。问题是支付网关不接受,(逗号)作为整数和小数部分(即美元,美分)之间的分隔符,而只接受(美元.美分)。

我想确保它接受两个字符。(dot) AND , (comma) 所以客户可以同时使用,表格只会发送。到外部服务器。

更新:

这是当前的 javascript 代码:

`

    function startPayment() {
        var objForm = document.getElementById("ePay");

        if (objForm.merchantnumber.value.length < 7) {
            alert("Please enter your merchant!");
            return false;
        }

        paymentwindow = new PaymentWindow({

            'windowstate': 1,

            'paymentcollection': 1,

            'language': 1,

            'merchantnumber': objForm.merchantnumber.value,

            'amount': objForm.amount.value * "100",

            'currency': "208",

            'orderid': objForm.orderid.value,

        });

        paymentwindow.open();
    }



    function init() {
        var sURL = String(window.location);
        var arrURL = sURL.split("/");
        var sAcceptURL = "";
        var objForm = document.getElementById("ePay");
        var n;

        for (n = 0; n < arrURL.length - 1; n++)
            sAcceptURL += arrURL[n] + "/";

        objForm.cancelurl.value = sURL;
        objForm.accepturl.value = sAcceptURL + "accept.html";
    }

</script>`

这是 HTML 代码:

<tr>
<td>Amount:</td>
<td>
<input type="text" name="amount" value="" style="width: 200px;" />
</td>
<td>
Amount to pay
</td>
4

2 回答 2

1

对此的解决方案是将“,”替换为“。” 如果这就是您要执行的操作:

amount.replace(/,/g, '.');

此行将使用 RegExp 查找出现的 ',' 并将其替换为 '.'。但是,由于您正在为后端创建一个安全表单,因此一些推荐的做法是先在后端对其进行解析,并确认没有 SQL 注入之类的痕迹,并确保所有输入都是有效的。例如,如果您只想接受数字和“.” 在您的输入中,我会使用:

var rxCheck = /[0-9\.]*/g;
if (!rxCheck.test(amount)) {
    // TODO: .. code if the input is invalid ..
}

祝您搜索顺利!

于 2013-02-21T22:48:36.210 回答
0

你可以试试这个:

objForm.amount.value.split(",").join(".");

或这个:

objForm.amount.value.replace( /,/g, "." )

当心:如果您的代码要在更多文化中运行,您应该以另一种方式处理。

于 2013-02-21T22:44:12.423 回答