jQuery 输入数字将波斯/阿拉伯数字转换为英文数字

Ped*_*ozi 4 jquery google-chrome input-field

我有一个类型的输入字段number。我也想在这个领域接受波斯/阿拉伯数字。我想使用 jQuery 将这些数字转换为英文,但似乎我无法检索这些值。

jQuery('input[type="number"]').on('input', function() {
    console.log(jQuery(this).val());
});
Run Code Online (Sandbox Code Playgroud)

对于非英文数字val()为空字符串。如果值不是英文数字,​​有没有办法获取数字输入字段的值?

更新:

Persian numbers: ? ? ? ? ? ? ? ? ? ?

English numbers: 0 1 2 3 4 5 6 7 8 9
Run Code Online (Sandbox Code Playgroud)

更新2:

看起来 Firefox 返回正确val但 Chrome 返回空字符串。所以我的问题适用于谷歌浏览器。

Moh*_*ori 7

您可以使用此功能:

function toEnglishNumber(strNum) {
        var pn = ["?", "?", "?", "?", "?", "?", "?", "?", "?", "?"];
        var en = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"];
        var an = ["?", "?", "?", "?", "?", "?", "?", "?", "?", "?"];
        var cache = strNum;
        for (var i = 0; i < 10; i++) {
            var regex_fa = new RegExp(pn[i], 'g');
            var regex_ar = new RegExp(an[i], 'g');
            cache = cache.replace(regex_fa, en[i]);
            cache = cache.replace(regex_ar, en[i]);
        }
        return cache;
    }
Run Code Online (Sandbox Code Playgroud)


小智 3

我发现这个要点提供了解决这个问题的一个很好的解决方案。

将此函数添加到您的 JavaScript 代码中:

String.prototype.toEnDigit = function() {
    return this.replace(/[\u06F0-\u06F9]+/g, function(digit) {
        var ret = '';
        for (var i = 0, len = digit.length; i < len; i++) {
            ret += String.fromCharCode(digit.charCodeAt(i) - 1728);
        }

        return ret;
    });
};
Run Code Online (Sandbox Code Playgroud)

你可以这样使用:

jQuery('input[type="number"]').on('input', function() {
    var value = jQuery(this).val();
    console.log(value.toEnDigit());
});
Run Code Online (Sandbox Code Playgroud)