プロが教えるわが家の防犯対策術!

初めて質問をさせていただきました。

https://oshiete.goo.ne.jp/qa/9800373.html
こちらを参考にJavaScriptによる自動計算フォームを設置しようとしていますが、
3桁区切りのカンマをつける方法を調べていますがうまく反映できません。
ご教授いただけますと幸いです。

<script>
document.addEventListener('change',function(e){
var t=e.target;
if(t.nodeName=="INPUT" ||t.nodeName=="SELECT"){
var num=0;
var f=t.form;
for(var i=0;i<f.length;i++){
if(f[i].name=="ans") continue;
if((f[i].type=="checkbox" ||f[i].type=="radio") && f[i].checked ||f[i].type=="text") num+=parseInt(f[i].value);
if(f[i].type=="select-one") num+=parseInt(f[i].options[f[i].selectedIndex].value);
}
f.elements["ans"].value=num;
}
});
</script>

<form>
<input type="checkbox" name="a" value="100">100
<input type="checkbox" name="b" value="200">200
<input type="checkbox" name="c" value="300">300
<input type="radio" name="d" value="0" checked>0
<input type="radio" name="d" value="400">400
<input type="radio" name="d" value="500">500
<select name="e">
<option value="0">0</option>
<option value="600">600</option>
<option value="700">700</option>
</select>
<input type="text" name="f" value="0"><br>
ans:<input type="text" name="ans" value="0" readonly>
</form>

A 回答 (1件)

こんばんは



計算結果をカンマ区切りにしたいということでしょうか?

こんな感じではいかがでしょうか?
const Comma3 = n => {
let m = (n + "").replace(/,/g, "");
if(m.length>3) while(m != (m = m.replace(/^(-?\d+)(\d{3})/, "$1,$2")));
return m;
}
を定義しておいて、ご提示のスクリプトで

f.elements["ans"].value = Comma3(num);
とするとか。

※ 引数のチェックはしていません。
    • good
    • 0
この回答へのお礼

一発で解決いたしました!
ありがとうございました!!

お礼日時:2021/07/27 00:41

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!