Nodeでcheckboxの値取得でハマりました。。
Node + Express + EJSで開発してるんですが、チェックボックスのあたりを取るところでハマっちゃいました。
<form action="https://ngxtst.kumakake.com/medialab/test" method="post">
<input type="hidden" name="abc" value="10">
<table>
<thead>
<tr> <th>からむ1</th> <th>からむ2</th> </tr>
</thead>
<tbody>
<tr> <td>001</td> <td><input type="checkbox" name="v001" value='10'></td> </tr>
<tr> <td>001</td> <td><input type="checkbox" name="v001" value='20'></td> </tr>
<tr> <td>001</td> <td><input type="checkbox" name="v001" value='30'></td> </tr>
<tr> <td>001</td> <td><input type="checkbox" name="v001" value='40'></td> </tr>
</tbody>
</table>
<input type="submit">
</form>
こんな感じのがどのように取得できるのかとこんな感じでしてみました。
var express = require('express');
var router = express.Router();
router.post('/', function(req, res, next) {
console.log( "body" );
console.dir( req.body );
});
module.exports = router;
ところが、選択する項目が1つとそれ以上で受信する形式が違うんです。
1つの時:{ abc: ’10’, v001: ’10’ }
2つの時:{ abc: ’10’, v001: [ ’10’, ’20’ ] }
2つ以上でないと、配列とならない。。まぁ、言われてみればそうかも。。
※ちなみに項目名を”v001″から”v001[]”もやってみたのですが、同じでしたorz
ところがこれをv001.eachなんかで処理をすると、
1つのときは
1
0
2つ以上の時は
10
20
こんな感じで返ってきます(^^;
1つのときは”10″とだけ返ってきてほしいいんですが(^^;
こんなこと、普通に何方かが解決手段を掲載されてるだろうと、あれこれググってみたのですが見当たらず。。。
ということは、私とこ固有の問題???う〜ん。。。
で、そう入っても仕方ないので、処理を考えてみました。。つづく。。。