テーブルの行を選択し、上下のボタンを押すことで、テーブルの選択行の並びを上下に入れ替えできるようにしたいと思っています。
テーブルをクリックすることで、その行のコード列の値がテキストボックス#codeに入るようにし、
その値をもとにtdの中身を検索して、#codeの値のある行を上下にするようにしました。
▼上ボタンを押したときの関数です▼
$("#up").click(function() {
var code = $('input#code').val();
var tr = "";
$("td:contains(" + code + ")").each(function(index) {
if ($(this).text() == code) {
tr = $(this).parent();
}
});
// 一個前のtrの前に置く if ($(tr).prev("tr")) { $(tr).insertBefore($(tr).prev("tr")[0]); }
});
コード | 価 格 |
――――――――――――
1 | 0 |
――――――――――――
2 | 3000 |
――――――――――――
3 | 0 |
――――――――――――
4 | 500 |
――――――――――――
999 | 450 |
テーブルは上記のようになっていますが、
コード1、2の行は選択後、上下ボタンを押すことで、思い通りの入れ替えができるようになりました。
ですが、コード3以降の行が思い通りの動きをせず、
・3の行を選択して上下ボタンを押しても4の行が動く
・4の行を選択して上下ボタンを押しても3の行が動く
・999の行は選択後上下ボタンを押しても動かない
となっております。
こちら考えられる原因は何になりますでしょうか?
ご回答、またはアドバイスをいただけますと幸いです。
なにとぞよろしくお願いいたします。
※※※※※※※※※※※※※※※※※※※※※※※※※※※
追記です。
『テーブルをクリックすることで、その行のコード列の値がテキストボックス#codeに値が入る』
▼上記の関数がこちらです。▼
$("#datatable tbody").off().on('click', 'tr', function() {
selectedRowItems = $("#datatable").dataTable().fnGetData(this);
var code = document.querySelector("#code");
code.value = selectedRowItems[0];
▼テキストボックス【#code】▼
<form name="codeForm"> <input id="code" type="text" name="code" size="10"> </form> ------------------------------------------------------------ ▼↑ボタン▼ <button class="btn-cal btn-delete" id="up">↑</button> ------------------------------------------------------------ datatablesというプラグインのテーブルを使い、SQLのデータをそのままテーブルに引っ張ってきています。回答1件
あなたの回答
tips
プレビュー