首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >jQuery输入数字将波斯语/阿拉伯语数字转换为英语数字

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

Stack Overflow用户
提问于 2016-02-09 17:19:36
回答 5查看 7.3K关注 0票数 5

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

代码语言:javascript
运行
复制
jQuery('input[type="number"]').on('input', function() {
    console.log(jQuery(this).val());
});

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

更新:

代码语言:javascript
运行
复制
Persian numbers: ۰ ۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹

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

UPDATE2:

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

EN

回答 5

Stack Overflow用户

发布于 2018-01-09 22:29:45

您可以使用此函数:

代码语言:javascript
运行
复制
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;
    }

票数 7
EN

Stack Overflow用户

发布于 2016-02-10 17:20:07

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

将此函数添加到javascript代码中:

代码语言: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;
    });
};

你可以像这样使用:

代码语言:javascript
运行
复制
jQuery('input[type="number"]').on('input', function() {
    var value = jQuery(this).val();
    console.log(value.toEnDigit());
});
票数 3
EN

Stack Overflow用户

发布于 2017-10-24 15:36:20

您可以使用此jquery函数来实现最佳性能:

function toEnNumber (inputNumber2 ) { if (inputNumber2 == undefined) return '';var str =$.trim(inputNumber2 Number2.toString());if (str == "") return "";str =str.replace(/·/g,'0');str =str.replace(/str.replace/g,'1');str = str.replace(/۱/g,'2');str =۲(/۳/g,'3');str =str.replace(/str.replace/g,'4');str = str.replace(/۴/g,'5');str =str.replace(/۴/g,'6');str = str.replace(/۷/g,'7');str = str.replace(/۹/g,'8');str =str.replace(/۹/g,'9');return str;}

你只需要向这个函数传递一个字符串,就可以得到你想要的结果。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35288093

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档