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

标签 jquery google-chrome input-field

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

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

对于非英文数字val()是空字符串。如果数字输入字段的值不是英文数字,​​有什么方法可以获取该值吗?

更新:

Persian numbers: ۰ ۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹

English numbers: 0 1 2 3 4 5 6 7 8 9

更新2:

看起来 Firefox 返回了正确的 val,但 Chrome 返回了空字符串。所以我的问题适用于 Google Chrome。

最佳答案

您可以使用此功能:

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;
    }

关于jQuery输入数字将波斯/阿拉伯数字转换为英文数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35288093/

相关文章:

javascript - chrome 扩展中 background.js 的用途是什么?

javascript - Firefox Javascript 控制台和网络选项卡未显示重要错误?

javascript - 多模态弹出窗口 vue.js

javascript - Chrome 中的 Range.setStartAfter() 不能正确处理 span 或内联元素

javascript - Chrome scrollWidth 在 rtl 和 ltr 方向上不同

input - 检查输入字段是否为空或在 Cypress 测试中无法正常工作

javascript - 输入字段中的响应文本

angular - 有什么方法可以更改 Angular Material 上的浏览器自动完成视觉效果吗?

jquery - 如何使用 is()

javascript - 如何让jquery无限循环