jQuery 用阿拉伯数字数组替换英文数字数组

3

我的页面上有许多具有这个类的span元素

<span class="price">AED &nbsp;2129</span>
<span class="price">AED &nbsp;4129</span>

我想使用jQuery找到所有的span元素,然后将其中的AED替换成阿拉伯语中的Dirham单词,并用阿拉伯数字替换其中的数字。以下是我尝试了几个小时的目前代码。

jQuery('span.price').val(function(i,val) {

    // text
    var en_currency = "AED";
    var ar_currency = "درهم";

    // array
    var f = ['0','1','2','3','4','5','6','7','8','9', en_currency];
    var r = ['٠','١','٢','٣','٤','٥','٦','٧','٨','٩', ar_currency];

    var valArray = val.split(' ');
    jQuery.each(valArray, function(i,v){
       var inF = jQuery.inArray(v, f);
       if(inF !== -1){
         valArray[i] = v.replace(f[inF], r[inF]);
       }
    });
    return valArray.join(' ');
});
2个回答

3

You need to use text() not val(), val() using for getting or setting form fields in case of span text() is needed. Then you can simplify your code with callback in replace()

// text
var en_currency = "AED";
var ar_currency = "درهم";

// array
var f = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'];
var r = ['٠', '١', '٢', '٣', '٤', '٥', '٦', '٧', '٨', '٩'];


jQuery('span.price').text(function(i, val) {
  return val.replace(en_currency, ar_currency).replace(/\d/g, function(m) {
    return r[f.indexOf(m)];
  })
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<span class="price"> AED 2312 </span>
<span class="price"> AED 1023 </span>


3

请使用texthtmlspan元素没有value属性。

jQuery('span.price').val(function(i,val) {
//                   ^^^

应该是

jQuery('span.price').text(function(i,val) {

示例:

// text
var en_currency = "AED";
var ar_currency = "درهم";

// array
var f = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'];
var r = ['٠', '١', '٢', '٣', '٤', '٥', '٦', '٧', '٨', '٩'];


jQuery('span.price').text(function(i, val) {
  val = val.replace(en_currency, ar_currency);
  
  var valArray = val.split('');
  
  jQuery.each(valArray, function(i, v) {
    console.log(i,v);
    var inF = jQuery.inArray(v, f);
    if (inF !== -1) {
      valArray[i] = v.replace(f[inF], r[inF]);
    }
  });
  return valArray.join('');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<span class="price">AED &nbsp;2129</span>
<span class="price">AED &nbsp;4129</span>


只是好奇,但是Javascript在阿拉伯字符上是否也需要使用unescape,因为它们看起来像Unicode?还是这是我的安全考虑? - somethinghere
1
我给你的答案点了个赞,它有效且简洁,我只是想知道(我不熟悉阿拉伯字符)。 - somethinghere
我为你的努力点赞,但我认为答案比这个更简洁。不过还是谢谢你,我的朋友! - TheBlackBenzKid
1
@TheBlackBenzKid 是的,我同意,我也点了赞 :) - Tushar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接