prototype.js でチェックされてるラジオボタンの値を取得したい
KREISEL チームの池田です。
開発中に久し振りに javascript を使う場面があって prototype.js の素晴らしさを再確認したのでご紹介します。
フォームに input 要素の radio ボタンが 3 つあって、どれが選択されているか一発で取得したい場合、みなさんはどうしますか。
排他制御のフォームコントロールなので prototype.js なら要素のオブジェクトの値、
つまり、
$('radio_element_name').value
で取得できると思っていましたが失敗。(これでいけたら楽なのですが。)
思い直して調べてみると、フォームの特定の要素オブジェクトのみ取得する便利な
getInputs メソッドを発見。
var radio_elements = Form.getInputs('form_id', 'radio', 'radio_name'); radio_elements.each(function (element) { if (element.cheked == true) { window.alert(element.value); } }
ちなみに getInputs メソッドの第一引数には form オブジェクトかID名を渡すのですが、
getElementsByTagName() でオブジェクトを取得する場合は配列で戻ってくることに注意。
form = getElementsByTagName('form')[0];
上記のソースでも期待通りですが、prototype.js ならもっと簡潔に書く方法がありました。
var value = Form.serialize($('form')).toQueryParams()['radio_element_name'];
これは Form.serialize が全フォームコントロールを “name=value" の形に変換し、さらに toQueryParams メソッドが配列に変換するので、フォームコントロール名を指定すれば値が取得できます。
これならどんなフォームコントロールの値も簡単に取得できるのでお試し下さい。
ディスカッション
コメント一覧
まだ、コメントがありません