背景:需要根據一個input中輸入的金額轉換為標准的 每三位加一個逗號,保留兩位小數的 金額標准(准換為標准金額的js 是addCommas,感興趣的可以搜一下,網上一大堆)。
另外一個input (id用 i2 代替)是這個input(id用 i2 代替)的0.05;
根據 i1 的onchang觸發 一個js函數 gbje(),在gbje()中給i2賦值,並將i1轉換為標准金額格式。但是i2的onchange事件在賦值時並沒有觸發。
解決辦法:用keyup()綁定addCommas函數,用document.getElementById('i2')獲取指定元素。
示例(部分代碼):
<script>
function gbje(obj){
var je1 = obj.value;
while(je1.indexOf(",")!=-1){
je1 = je1.replace(/,/,"");
}
var je2 = je1*0.05;
$("#i2").val(je2).keyup(addCommas(document.getElementById('i2')));
addCommas(obj);
}
</script>
<tr>
<td align="right" class="tz_pd tz_title">金額1:</td>
<td align="left" bgcolor="#FFFFFF" class="tz_pd">
<input type="text" name="i1" id="i1" onchange="gbje(this)" size="30" />
</td>
<td align="right" class="tz_pd tz_title">金額2:</td>
<td align="left" bgcolor="#FFFFFF" class="tz_pd">
<input type="text" name="i2" id="i2" readonly="readonly" size="30"/>
</td>
</tr>
准換數字標准的js
//將數字轉換為標准格式 每三位加個“,”
function addCommas(obj)
{
var str=obj.value;
while(str.indexOf(",")!=-1){
str=str.replace(/,/,"");
}
var newStr = "";
var count = 0;
if(str.indexOf(".")==-1){
for(var i=str.length-1;i>=0;i--){
if(count % 3 == 0 && count != 0){
newStr = str.charAt(i) + "," + newStr;
}else{
newStr = str.charAt(i) + newStr;
}
count++;
}
str = newStr + ".00"; //自動補小數點后兩位
obj.value=str;
}
else
{
for(var i = str.indexOf(".")-1;i>=0;i--){
if(count % 3 == 0 && count != 0){
newStr = str.charAt(i) + "," + newStr; //碰到3的倍數則加上“,”號
}else{
newStr = str.charAt(i) + newStr; //逐個字符相接起來
}
count++;
}
str = str + "00";//沒進行有幾位小數的判斷,所以給str補上兩位小數,以防位數不夠,
var point = str.substr(str.indexOf("."),3);
str = newStr + point
console.log(str)
obj.value=str;
}
//return x1 + x2;
}