jqueryをあまり理解せずに使用している素人の投稿ですみませんがご教授いただけましたら幸いです。
現在、下記のようにdatatablesを利用して納品書のようなものを作成したいと思っています。
<table id="master_store_index_list_table" class="table table-striped">
<thead>
<tr class="alert-info">
<th>商品名</th>
<th>単価</th>
<th>入数</th>
<th>計</th>
</tr>
</thead>
<tbody>
<tr>
<td>サッカーボール</td>
<td>2,500円</td>
<td><input></td>
<td></td>
</tr>
<tr>
<td>テニスボール</td>
<td>2,000円</td>
<td><input></td>
<td></td>
</tr>
<tr>
<td>バレーボール</td>
<td>1,900円</td>
<td><input></td>
<td></td>
</tr>
<tr>
<td>ドッジボール</td>
<td>1,500円</td>
<td><input></td>
<td></td>
</tr>
</tbody>
</table>
jquery datatablesでいろいろ調べた結果、
footerCallbackのように列の合計を表示するような
サンプルはいくつか見つかったのですが行の合計を出すやり方が見つかりません。
jquery datatablesで詳しいかた、大変恐縮ですがscriptを教えてください。
希望
①inputの部分に個数を入力して、単価×個数の計を表示したい
②個数を入力していない箇所はエラーが出ないようにしたい
③合計数字はカンマ入りで表示したい
④全ての合計は下部に小計、消費税、合計と表示したい
※datatablesでfooterCallbackを記載したが合計しか出ない
お忙しい中、大変恐縮ですが何卒宜しく御願い致します。
No.3ベストアンサー
- 回答日時:
この際だからdatatablesは無視して進めます
<script>
$(function(){
$('#master_store_index_list_table input').change(function(){calc();})
$('input[value="再計算"]').click(function(){calc();})
});
function addFigure(str) {
var num = new String(str).replace(/,/g, "");
while(num != (num = num.replace(/^(-?[0-9]+)([0-9]{3})/, "$1,$2")));
return num;
}
function calc() {
var shokei=0;
$('#master_store_index_list_table tbody td:nth-child(3) input').each(function(){
var tanka=$(this).parent().prev().text().replace(/[,円]/g,'');
var irisu=$(this).val();
var kingaku=" ";
if(irisu.match(/^[0-9]*$/)){
kingaku=tanka*irisu;
shokei+=kingaku;
kingaku=kingaku?addFigure(kingaku):" ";
}
$(this).parent().next().text(kingaku);
});
$('#shokei').text(shokei?addFigure(shokei):" ");
$('#zei').text(shokei?addFigure(parseInt(shokei*0.08)):" ");
$('#gokei').text(shokei?addFigure(parseInt(shokei*1.08)):" ");
}
</script>
<table id="master_store_index_list_table" class="table table-striped" border>
<thead>
<tr class="alert-info">
<th>商品名</th>
<th>単価</th>
<th>入数</th>
<th>計</th>
</tr>
</thead>
<tbody>
<tr>
<td>サッカーボール</td>
<td>2,500円</td>
<td><input></td>
<td></td>
</tr>
<tr>
<td>テニスボール</td>
<td>2,000円</td>
<td><input></td>
<td></td>
</tr>
<tr>
<td>バレーボール</td>
<td>1,900円</td>
<td><input></td>
<td></td>
</tr>
<tr>
<td>ドッジボール</td>
<td>1,500円</td>
<td><input></td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
<td>小計:</td>
<td id="shokei"></td>
</tr>
<tr>
<td></td>
<td></td>
<td>消費税:</td>
<td id="zei"></td>
</tr>
<tr>
<td></td>
<td></td>
<td>合計:</td>
<td id="gokei"></td>
</tr>
</tbody>
</table>
<input type="button" value="再計算">
ありがとうございます。 1つ目の解答では行計算がうまくいっていたのですが、
今回の解答でいただいたスクリプトを設置すると行計算と合計がうまく表示されません。
どこかID指定したりするのでしょうか。
No.6
- 回答日時:
>1番目に書いてもらったスクリプトは無視していいんですよね・・?
無視してください
yambejp様
無事動きました。
本当にありがとうございます。
厚かましいのですが、この納品書入力の部分で
送料を記載する項目を忘れていました。
もしよろしければ再度ご教示願えればと思います。
送料は数パターンあります。
①佐川便(1200円)で弊社が負担する場合
②佐川便(1200円)で顧客が負担する場合
③ヤマト便(1000円)で弊社が負担する場合
④ヤマト便(1000円)で顧客が負担する場合
⑤ヤマト便(500円)で弊社が半分負担する場合
上記をセレクトタブで選び、選んだものを単価に表示して
そのうえ個数を入力して自動計算したいなと思います。
例①を選択して2ケース配送する場合は
単価1200円 個数2 計2400円
このようなことは可能でしょうか。
※この質問は解決済みになってしまっていますので
別で質問したほうが良いならおっしゃってください。
お願いします
No.5
- 回答日時:
ttps://code.jquery.com/jquery-2.1.4.min.js
ttps://code.jquery.com/jquery-1.12.3.js
ttps://code.jquery.com/ui/1.11.4/jquery-ui.min.js
ご指摘の上記を組み込んだうえで、#3のソースをテーブルまで含め
コピペしましたが問題なく動きますね
ご利用の環境の問題かもしれないので、
firefoxをご利用でしたらF12でデバッガを起動したうえで
エラー状況を確認してみてください
私の環境ではIE11、firefox、chrome、edgeでも問題ないようです
(むしろ私の環境がおかしい?)
No.4
- 回答日時:
>今回の解答でいただいたスクリプトを設置すると行計算と合計がうまく表示されません。
あれ?そうですか?
一応各ブラウザで挙動確認しているのですが・・・
まさかと思いますがjqueryライブラリを読み込んでないとかないですよね?
<!-- jQuery 2.1.4 -->
<script src="/adminlte/plugins/jQuery/jQuery-2.1.4.min.js"></script>
<!-- jQuery UI 1.11.4 -->
<script src="https://code.jquery.com/ui/1.11.4/jquery-ui.min. …
<!-- jQuery UI 1.12.3 -->
<script src="https://code.jquery.com/jquery-1.12.3.js"></scri …
上記が記載してあるのですがまちがってますでしょうか
No.2
- 回答日時:
こんにちは。
同じく素人です。
datatablesって存じませんが、これのことでしょうか?
https://datatables.net/
じっくり読めばわかるのだろうと思いますが、英語がさっぱりな上にボリュームがありすぎて・・・(汗)
とりあえず超拾い読みの上での、テキトーですが・・・
こんな感じでしょうか?
※ 拾い読みなので、要領が悪いかもしれません。
※ 入力値のチェックや計算などは処理場の最低限の内容になっていますので、きちんとなさるほうがよろしいと思います。
※ datatables的に記述したつもりですが、各種の機能と全て整合しているかまでは確認していません。
とりあえずは、こんな感じでできるのではというつもりのサンプルです。
(インデントは全角空白にしてありますので、半角にしてください)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html lang="ja">
<head><title>test</title>
<meta http-equiv="Content-Style-Type" content="text/css">
<meta http-equiv="Content-Script-Type" content="text/javascript">
<script type="text/javascript" src="http://www.google.com/jsapi"></script>
<script type="text/javascript">google.load("jquery","1");</script>
<script type="text/javascript" src="https://cdn.datatables.net/1.10.12/js/jquery.dat …
<link href="https://cdn.datatables.net/1.10.12/css/jquery.da … type="text/css" rel="stylesheet">
<script type="text/javascript">
$(document).ready(function() {
var tbl = $("#test_table").DataTable();
$("#test_table tbody").on("change", "input", function(evt){
var val = $(this).val();
var rw = tbl.row($(this).closest("td"));
if( parseInt(val)==val ){
var price = parseInt(rw.data()[1].replace(",",""));
var total = (price * val).toString();
while(total != (total = total.replace(/^(-?\d+)(\d{3})/, "$1,$2")));
tbl.cell(rw, 3).data(total + "円");
} else if(val == ""){
tbl.cell(rw, 3).data("");
} else alert("整数を入力 !");
});
});
</script>
</head>
<body>
<table id="test_table">
<thead>
<tr class="alert-info">
<th>商品名</th>
<th>単価</th>
<th>入数</th>
<th>計</th>
</tr>
</thead>
<tbody>
<tr>
<td>サッカーボール</td>
<td>2,500円</td>
<td><input></td>
<td></td>
</tr>
<tr>
<td>テニスボール</td>
<td>2,000円</td>
<td><input></td>
<td></td>
</tr>
<tr>
<td>バレーボール</td>
<td>1,900円</td>
<td><input></td>
<td></td>
</tr>
<tr>
<td>ドッジボール</td>
<td>1,500円</td>
<td><input></td>
<td></td>
</tr>
</tbody>
</table>
</body>
</html>
No.1
- 回答日時:
とりあえず行の小計ならjQueryだけでも、相対位置を確認すればいけそうですが
<script>
$(function(){
$('#master_store_index_list_table input').change(function(){
var this_num=$(this).val();
var prev_num=$(this).parent().prev().text().replace(/[,円]/g,'');
var next_num=this_num*prev_num;
$(this).parent().next().text(addFigure(next_num));
})
var shokei=0;
})
function addFigure(str) {
var num = new String(str).replace(/,/g, "");
while(num != (num = num.replace(/^(-?\d+)(\d{3})/, "$1,$2")));
return num;
}
</script>
<table id="master_store_index_list_table" class="table table-striped" border>
<thead>
<tr class="alert-info">
<th>商品名</th>
<th>単価</th>
<th>入数</th>
<th>計</th>
</tr>
</thead>
<tbody>
<tr>
<td>サッカーボール</td>
<td>2,500円</td>
<td><input></td>
<td></td>
</tr>
<tr>
<td>テニスボール</td>
<td>2,000円</td>
<td><input></td>
<td></td>
</tr>
<tr>
<td>バレーボール</td>
<td>1,900円</td>
<td><input></td>
<td></td>
</tr>
<tr>
<td>ドッジボール</td>
<td>1,500円</td>
<td><input></td>
<td></td>
</tr>
</tbody>
</table>
yambejp様
ありがとうございます。
教えていただいたスクリプトで行計算が表示できるようになりました。
ただ、footerへの合計がうまくできません。
もしお手すきでしたら、フッターへ小計、消費税、合計と出せるようなやり方も教えていただければ幸いです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Selenium.ChromeDriverの使い方について 7 2022/09/22 06:43
- HTML・CSS テーブルタグのセルの幅の一部だけを指定 1 2023/03/12 12:02
- JavaScript EasyUIのSubGrid(jquery)におけるObjectに入れた連想配列について 1 2022/05/02 11:21
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- JavaScript jQueryで同じクラス名のものを別物として扱いたい 1 2022/06/17 14:14
- PHP htmlで複数の個数入力欄を表示させるには 1 2022/09/20 03:11
- HTML・CSS 【CSS】:hasで可能? imgを含むtr要素を選択したい 1 2022/11/17 14:36
- HTML・CSS 自身のHPにYouTube動画を貼り付けるのが出来なくなり困ってます 1 2022/11/11 10:44
- MySQL SQL任意に並び替えをしたい 2 2023/08/28 10:47
- 工学 【制御工学】単位ステップ応答の遅れ時間の求め方(令和2年度の機械設計技術者試験(制御工学)の問題) 3 2022/11/02 10:51
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
特定<table>内の<td>の色を変える
-
JavaScriptで特定のtdタグにcla...
-
ハイパーリンクを別ウインドウ...
-
一覧から選択した行の行番号を...
-
ブルダウン選択でページの表示...
-
tableの任意行にfocusをあてる
-
マウスをブラウザの外に出した...
-
jqueryとscriptでTABLEのセルを...
-
至急!GetElementById でtdの...
-
正規表現で任意の文字列が含ま...
-
プルダウンで選択すると、DBの...
-
jquery datatablesを使用 イン...
-
【JavaScript】tableタグを利用...
-
Excelで作ったhtmlファイルのサ...
-
PERL
-
カレンダーの年月日の横に翌月...
-
Selenium.ChromeDriverの使い方...
-
プルダウン選択を変更すると、...
-
onchangeイベントを強制的に発...
-
select要素のvalueを配列で取得...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
jsで質問です。 displayプロパ...
-
javascriptで質問です。 displa...
-
ハイパーリンクを別ウインドウ...
-
JavaScriptで特定のtdタグにcla...
-
プルダウンで選択すると、DBの...
-
一覧から選択した行の行番号を...
-
tableの任意行にfocusをあてる
-
至急!GetElementById でtdの...
-
特定<table>内の<td>の色を変える
-
マウスをブラウザの外に出した...
-
添付画像のようなhtmlとcssのス...
-
スクロールバーの表示位置を変...
-
クリックされた罫表セルの行番...
-
チェックボックスにチェックが...
-
JavaScriptでテーブルの行入れ替え
-
HTML中のTABLEのデータを抽出す...
-
jquery datatablesを使用 イン...
-
JavaScriptでテーブルをクリッ...
-
階層式メニューをtableタグ内に
-
マウスオーバー時テーブルの背...
おすすめ情報
また、再計算ボタンを押しても計算されていないようです。。
1番目のスクリプトと2番目の解答のスクリプトを2つ設置するのでしょうか。
1つ目のスクリプトを設置するとちゃんと行計算される。
上記を消して、2番目のスクリプトを設置すると行計算も再計算もできないです。。
1番目と2番目のスクリプトは同時に設置してもよいのでしょうか