0

JavaScriptフォームで簡単な置換を作成しようとしています。

フォームは、invoicenumber と金額を外部の支払いゲートウェイに送信しています。問題は、支払いゲートウェイが、整数部分と小数部分 (つまり、ドル、セント) の間の区切り文字として , (カンマ) を受け入れず、(ドル.セント) のみを受け入れることです。

両方の文字を受け入れるようにしたい。(ドット) AND , (カンマ) したがって、顧客は両方を使用でき、フォームは を送信するだけです。外部サーバーへ。

アップデート:

これは現在の 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 を使用して出現する「,」を見つけ、それを「.」に置き換えることです。ただし、バックエンドに対して安全なフォームを作成しているため、最初にバックエンドで解析し、S​​QL インジェクションなどの痕跡がないことを確認し、すべての入力が有効であることを確認することをお勧めします。たとえば、数字と「.」のみを受け入れようとしている場合。あなたの入力では、私は次を使用します:

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 に答える