2016-02-05 52 views
0

我需要在輸入文本字段中更改貨幣的前綴。所以貨幣前綴會根據收音機而改變。當單擊收音機但不能更改前綴時,可以重置輸入字段。更改廣播選擇中的前綴貨幣符號

這裏是我的代碼:

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/

+0

'crncy'沒有在格式函數中定義。也許你的意思是讓它成爲一個全球性的? – mkaatman

+2

如果($('#crn​​t-thb').val()==「0」)'總是成立,這種情況不會出現嗎?你需要測試這個單選按鈕是否被選中,而不是它的價值。或者使用'this'測試點擊收音機的值。 – nnnnnn

+2

^^^^還有一個問題。檢查[Demo](https://jsfiddle.net/tusharj/u0rc9trh/3/) – Tushar

回答

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. 感謝您使用我的代碼,我寫它來幫助人們,我很高興它仍然是。乾杯!