我需要在输入文本字段中更改货币的前缀。因此货币前缀将根据无线电而改变。单击一个无线电但是无法更改前缀时,我可以重置输入字段。
这是我的代码:
Price (
<label>
<input type="radio" name="prop_crnt" class="currency" value="0" id="crnt-thb" required> THB</label>
<label>
<input type="radio" name="prop_crnt" class="currency" value="1" id="crnt-usd"> 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 :(得分: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。 感谢您使用我的代码,我写它来帮助别人,我很高兴它仍然存在。干杯!