我有一个类型编号的输入字段。我想在这个领域接受波斯语/阿拉伯语数字。我想用jQuery将这些数字转换成英文,但似乎我无法检索这些值。
jQuery('input[type="number"]').on('input', function() {
console.log(jQuery(this).val());
});
对于非英语数字val()
为空字符串。如果值不是英文数字,有没有办法获取数字输入字段的值?
更新:
波斯数字是:0 1 2 3 4 5 6 7 8 9 英文编号为:0 1 2 3 4 5 6 7 8 9
UPDATE2:
看起来Firefox会返回正确的val
,但Chrome会返回空字符串。所以我的问题适用于Google Chrome。
答案 0 :(得分:2)
我发现这个gist为解决这个问题提供了一个很好的解决方案。
将此函数添加到您的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;
});
};
你可以像这样使用:
jQuery('input[type="number"]').on('input', function() {
var value = jQuery(this).val();
console.log(value.toEnDigit());
});
答案 1 :(得分:2)
你可以使用这个功能:
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;
}
答案 2 :(得分:1)
您可以使用此jquery函数以最佳性能执行此操作:
function toEnNumber(inputNumber2) { if (inputNumber2 == undefined) return ''; var str = $.trim(inputNumber2.toString()); if (str == "") return ""; str = str.replace(/۰/g, '0'); str = str.replace(/۱/g, '1'); str = str.replace(/۲/g, '2'); str = str.replace(/۳/g, '3'); str = 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; }
你只需要将一个字符串传递给这个函数并获得你期望的结果。
答案 3 :(得分:1)
尝试
function PersianToNum(persiannumstr) {
var num=0, c;
for(var i=0; i < persiannumstr.length; i++)
c = persiannumstr.charCodeAt(i);
num += c-1776;
num *= 10;
}
return num/10;
}
答案 4 :(得分:0)
let persianNumbers = ["۰","۱", "۲", "۳", "۴", "۵", "۶", "۷", "۸", "۹", ]
let res="";
let cx=""
let counter=0;
function myFunction(){
let c = document.getElementById("myInput").value;
let myArray = c.split("")
for(var i=0;i<persianNumbers.length;i++)
{
for(var j=0;j<=persianNumbers.length;j++)
{
if(myArray[i]==j)
{
res = persianNumbers[j]
console.log("persian",persianNumbers[j])
}
}
}
cx=cx.concat(res)
console.log("final value",cx)
}
<div class="input-group mb-3">
<input type="number" class="form-control" id="myInput" placeholder="Username" aria-label="Username" aria-describedby="basic-addon1" oninput="myFunction()">
</div>