在无线电选择上更改前缀货币符号

时间:2016-02-05 03:48:10

标签: javascript jquery

我需要在输入文本字段中更改货币的前缀。因此货币前缀将根据无线电而改变。单击一个无线电但是无法更改前缀时,我可以重置输入字段。

这是我的代码:

 Price (
<label>
  <input type="radio" name="prop_crnt" class="currency" value="0" id="crnt-thb" required>&nbsp;THB</label>
<label>
  <input type="radio" name="prop_crnt" class="currency" value="1" id="crnt-usd">&nbsp;USD</label>):

Javascript:

//reset input on radio clicked
$("input[name='prop_crnt']").on('click', function() {
  $('input.money').val('');
  //change currency prefix
  if ($('#crnt-thb').val()=="0") {
    var crncy="฿";
  }else{
    var crncy="$";
  }
});



var format = function(num) {
  var str = num.toString().replace(crncy, ""),
    parts = false,
    output = [],
    i = 1,
    formatted = null;
  if (str.indexOf(".") > 0) {
    parts = str.split(".");
    str = parts[0];
  }
  str = str.split("").reverse();
  for (var j = 0, len = str.length; j < len; j++) {
    if (str[j] != ",") {
      output.push(str[j]);
      if (i % 3 == 0 && j < (len - 1)) {
        output.push(",");
      }
      i++;
    }
  }
  formatted = output.reverse().join("");
  return (crncy + formatted + ((parts) ? "." + parts[1].substr(0, 2) : ""));
};
//currency
$(".money").keyup(function(e) {
  $(this).val(format($(this).val()));
});

这是jfiddle:https://jsfiddle.net/u0rc9trh/2/

1 个答案:

答案 0 :(得分:1)

这样的东西应该是你正在寻找的,虽然它是根据你的需要编写的,所以可能会添加一些变量或其他东西。无论如何,这应该有效:

var format = function(num){
    var cur = $('#crnt-thb').is(":checked") ? "฿" : "$", str = num.toString().replace("฿", "").replace("$", ""), parts = false, output = [], i = 1, formatted = null;
    if(str.indexOf(".") > 0) {
        parts = str.split(".");
        str = parts[0];
    }
    str = str.split("").reverse();
    for(var j = 0, len = str.length; j < len; j++) {
        if(str[j] != ",") {
            output.push(str[j]);
            if(i%3 == 0 && j < (len - 1)) {
                output.push(",");
            }
            i++;
        }
    }
    formatted = output.reverse().join("").toString();
    return(cur + formatted + ((parts) ? "." + parts[1].substr(0, 2) : ""));
};
//currency
$(".money").keyup(function(e) {
    $(this).val(format($(this).val()));
});
$("input[name='prop_crnt']").on('click', function(){
    $(".money").keyup();
});

对于双replace(),如果您想简化一些事情,请查看this answer。另外,a fiddle for you to test

P.S。 感谢您使用我的代码,我写它来帮助别人,我很高兴它仍然存在。干杯!