#背景
python+FLASK+HTMLで、アプリを開発しています。
アプリの中に、テーブルへの入力処理があります。
テーブルカラムの中に、ON/OFFという二値しかとらないフィールドがあります。
(ON,OFFというのは、あくまで例ですが、1,0というバイナリ情報ではなく、あくまで2値をとるテキストです)
#状況
HTMLテーブルのUIに関してですが、現状はON/OFFを手入力しています。
テキストなので、入力が面倒なので、これをチェックボックスで切り替えできるようにしたいと思います。
(一括で切り替えるボタンも、見出し行につけたい要望もありますが、これは二の次です)
#現状
<td>TABLEの編集属性をONにして、ダイレクトに入力できるソースにしていますただし、2列目のONというところは、チェックボックスで入力ができるように
したいと考えています。
html
1 <tr> 2 <td>アイテム</td> 3 <td>ON</td> 4 </tr> 5
html
1 <tr> 2 <td>アイテム</td> 3 <td><input type="checkbox">ON</td> 4 </tr>
この後の処理として、TABLE内容をCSVでバックエンドに保存する処理があり、
JSON化して、POSTで送っています。
その際には、TABLEに残った残骸の中に、チェックボックスのHTMLは残さないように
する必要があります。
#質問内容
チェックボックスを押すと、on/off という風にテキストが変わるようにするには、
どういうマクロを組み込めばいいでしょうか?
#追加内容
テーブルの読込、書出のソースを追加しました。
対象となっているテーブルは、CSVデータから生成しており、
更新後には、CSVデータとして排出されます。
テーブルへのチェックボックスは、単なる入力支援として入れたい状況です。
あと実際には、チェックボックス化したいカラムは、動的にデータを読み込んだ後に、
動的に追加という形になります
(出力時には、その内容を消すような処理が必要です)
javascript
1 2 var data; 3 var rownum = 0; 4 $.ajax({ 5 type: "GET", 6 url: '{{csvname}}', 7 dataType: "text", 8 success: function (response) { 9 data = $.csv.toArrays(response); 10 generateHtmlTable(data); 11 $("#target").tablesorter(); 12 } 13 }); 14 function generateHtmlTable(data) { 15 var html = '<table id="target" align="center" >'; 16 if (typeof (data[0]) === 'undefined') { 17 return null; 18 } else { 19 $.each(data, function (index, row) { 20 //bind header 21 if (index == 0) { 22 html += '<thead>'; 23 html += '<tr>'; 24 $.each(row, function (index, colData) { 25 html += '<th label=num>'; 26 html += colData; 27 html += '</th>'; 28 }); 29 html += '</tr>'; 30 html += '</thead>'; 31 html += '<tbody>'; 32 } else { 33 html += '<tr>'; 34 $.each(row, function (index, colData) { 35 html += '<td>'; 36 html += colData; 37 html += '</td>'; 38 }); 39 html += '</tr>'; 40 } 41 }); 42 html += '</tbody>'; 43 html += '</table>'; 44 $('#csv-display').append(html); 45 set_number(); 46 count_num(); 47 } 48 } 49 50function saveing() { 51 var data = $('#target').tableToJSON(); 52 $.ajax({ 53 type: "POST", 54 url: "/csvout" + document.getElementById('fname').value, 55 contentType: 'application/json; charset=UTF-8', 56 data: JSON.stringify(data), 57 dataType: 'json', 58 success: function (data) { 59 window.location.reload(true); 60 console.log(data); 61 }, 62 error: function (error) { 63 console.log(data); 64 alert("もう一度クリックしてください。"); 65 }, 66 }); 67 } 68

回答2件
あなたの回答
tips
プレビュー