簡単バージョン(シングルフォーム:個別適用タイプ)
<!DOCTYPE HTML>
<html lang="ja">
<head>
<meta charset="utf-8">
<title></title>
<link href="xxx.css" rel="stylesheet" type="text/css">
<script type="text/javascript">
function thousands_separators(num) {
var num_parts = num.toString().split(".");
num_parts[0] = num_parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, ",");
return num_parts.join(".");
}
console.log(thousands_separators(1000));
console.log(thousands_separators(10000.23));
console.log(thousands_separators(100000));
</script>
</head>
<body>
</body>
</html>
適用してみるとこうなる。
<!DOCTYPE HTML>
<html lang="ja">
<head>
<meta charset="utf-8">
<title></title>
<link href="xxx.css" rel="stylesheet" type="text/css">
</head>
<body>
<form name="F1">
<li><input class="tb_fmt1" name="h_feet" type="text" />feet</li>
<li><input class="tb_fmt1" name="h_inch" type="text" />inch </li>
<li><input type="button" value="submit" onclick="calc()"></li>
<li><input class="tb_fmt2" name="result" type="text" /> result </li>
<script type="text/javascript">
/**************************
* カンマ編集を行うFunction
**************************/
function toComma(obj){
if((obj.value).trim().length != 0 && !isNaN(obj.value)){
obj.value = Number(obj.value).toLocaleString();
}
}
/**************************
* カンマ編集を解除するFunction
**************************/
function offComma(obj){
var reg = new RegExp(",", "g");
var chgVal = obj.value.replace(reg, "");
if(!isNaN(chgVal)){
obj.value = chgVal; //値セット
obj.select(); //全選択
}
}
window.onload = function(){
var elements = document.getElementsByClassName("tb_fmt1");
for(var i=0;i<elements.length;i++){
elements[i].onfocus = function(){offComma(this);}
elements[i].onblur = function(){toComma(this);}
}
}
function calc(){
// カンマ編集を解除するFunction
var a = parseFloat(document.F1.h_feet.value.replace(/,/g,'')); <- この段階でaは、小数点を含む
カンマなしの数字になる。
var b = parseFloat(document.F1.h_inch.value.replace(/,/g,''));<- この段階でaは、小数点を含む
カンマなしの数字になる。
var result = a + b;
function thousands_separators(result) {
var num_parts = result.toString().split("."); ←小数点で分離
num_parts[0] = num_parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, ","); ←再度、カンマつきに
return num_parts.join("."); ←小数点を結合
}
document.F1.result.value =thousands_separators(result);
}
</script>
</script>
</body>
</html>
簡単バージョン(複数フォーム 一括適用)
<!DOCTYPE HTML>
<html lang="ja">
<head>
<meta charset="utf-8">
<title></title>
<link href="xxx.css" rel="stylesheet" type="text/css">
</head>
<body>
<form name="F1">
<li><input class="number" name="h_feet" type="text" />feet</li>
<li><input class="number" name="h_inch" type="text" />inch </li>
<li><input type="button" value="submit" onclick="calc()"></li>
<li><input class="number" name="result" type="text" /> result </li>
<script type="text/javascript">
/**************************
* カンマ編集を行うFunction
**************************/
function toComma(obj){
if((obj.value).trim().length != 0 && !isNaN(obj.value)){
obj.value = Number(obj.value).toLocaleString();
}
}
/**************************
* カンマ編集を解除するFunction
**************************/
function offComma(obj){
var reg = new RegExp(",", "g");
var chgVal = obj.value.replace(reg, "");
if(!isNaN(chgVal)){
obj.value = chgVal; //値セット
obj.select(); //全選択
}
}
window.onload = function(){
var elements = document.getElementsByClassName("number");
for(var i=0;i<elements.length;i++){
elements[i].onfocus = function(){offComma(this);}
elements[i].onblur = function(){toComma(this);}
}
}
function calc(){
// カンマ編集を解除するFunction
var a = parseFloat(document.F1.h_feet.value.replace(/,/g,'')); <-- 計算時にカンマを取り除く
var b = parseFloat(document.F1.h_inch.value.replace(/,/g,'')); <-- 計算時にカンマを取り除く
var result = a + b;
document.F1.result.value =result;
}
</script>
</script>
</body>
</html>
https://javascript.programmer-reference.com/js-textbox-format-comma/
<html lang="ja">
<head>
<meta charset="utf-8">
<title></title>
<link href="xxx.css" rel="stylesheet" type="text/css">
</head>
<body>
<form name="F1">
<li><input class="number" name="h_feet" type="text" />feet</li>
<li><input class="number" name="h_inch" type="text" />inch </li>
<li><input type="button" value="submit" onclick="calc()"></li>
<li><input class="number" name="result" type="text" /> result </li>
<script type="text/javascript">
/**************************
* カンマ編集を行うFunction
**************************/
function toComma(obj){
if((obj.value).trim().length != 0 && !isNaN(obj.value)){
obj.value = Number(obj.value).toLocaleString();
}
}
/**************************
* カンマ編集を解除するFunction
**************************/
function offComma(obj){
var reg = new RegExp(",", "g");
var chgVal = obj.value.replace(reg, "");
if(!isNaN(chgVal)){
obj.value = chgVal; //値セット
obj.select(); //全選択
}
}
window.onload = function(){
var elements = document.getElementsByClassName("number");
for(var i=0;i<elements.length;i++){
elements[i].onfocus = function(){offComma(this);}
elements[i].onblur = function(){toComma(this);}
}
}
function calc(){
// カンマ編集を解除するFunction
var a = parseFloat(document.F1.h_feet.value.replace(/,/g,'')); <-- 計算時にカンマを取り除く
var b = parseFloat(document.F1.h_inch.value.replace(/,/g,'')); <-- 計算時にカンマを取り除く
var result = a + b;
document.F1.result.value =result;
}
</script>
</script>
</body>
</html>
https://javascript.programmer-reference.com/js-textbox-format-comma/
============================================================
よいけど、複数の数値入力フォームがある時は?
<html>
<input id=numData type="text">
<Script>
/**
* 数値の3桁カンマ区切り
* 入力値をカンマ区切りにして返却
* [引数] numVal: 入力数値
* [返却値] String(): カンマ区切りされた文字列
*/
function addFigure(numVal) {
// 空の場合そのまま返却
if (numVal == ''){
return '';
}
// 全角から半角へ変換し、既にカンマが入力されていたら事前に削除
numVal = toHalfWidth(numVal).replace(/,/g, "").trim();
// 数値でなければそのまま返却
if ( !/^[+|-]?(\d*)(\.\d+)?$/.test(numVal) ){
return numVal;
}
// 整数部分と小数部分に分割
var numData = numVal.toString().split('.');
// 整数部分を3桁カンマ区切りへ
numData[0] = Number(numData[0]).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',');
// 小数部分と結合して返却
return numData.join('.');
}
/**
* カンマ外し
* 入力値のカンマを取り除いて返却
* [引数] strVal: 半角でカンマ区切りされた数値
* [返却値] String(): カンマを削除した数値
*/
function delFigure(strVal){
return strVal.replace( /,/g , "" );
}
/**
* 全角から半角への変革関数
* 入力値の英数記号を半角変換して返却
* [引数] strVal: 入力値
* [返却値] String(): 半角変換された文字列
*/
function toHalfWidth(strVal){
// 半角変換
var halfVal = strVal.replace(/[!-~]/g,
function( tmpStr ) {
// 文字コードをシフト
return String.fromCharCode( tmpStr.charCodeAt(0) - 0xFEE0 );
}
);
return halfVal;
}
/**
* 処理を適用するテキストボックスへのイベント設定
* onBlur : カンマ区切り処理実施
* onFocus : カンマ削除処理実施
*/
var elm = document.getElementById('numdata1','numdata2');
elm.addEventListener('blur', function(){ this.value = addFigure(this.value) }, false);
elm.addEventListener('focus', function(){ this.value = delFigure(this.value) }, false);
}
0 件のコメント:
コメントを投稿