jQueryはとても便利なプラグインです。
JavaScriptの普及を助けたといっても過言ではありません。
jQueryのおかげで煩雑なコードをかかずに綺麗なコードで色々なものが作れるようになりました。
今回は少し忘れやすい、jQueryでフォームから値を取得する方法をまとめていきます。
テキスト
よく使われる1行のテキストボックスです。
これはとても簡単でform要素に .val() で値を取得することが出来ます。
HTML
JavaScript
var formValue = $('#test-form [name=test-form]').val(); var val = Number(formValue) || 0; // NaNのときは0 alert(val); // => 56
ラジオボタン
値を取る、という意味では .val() で取得出来るのですが、実際に取得したいのは選択されている値を取りたいのですよね。
なので :checked で絞り込むということをやります。
HTML
JavaScript
var val = $('#test-form [name=test-radio]:checked').val(); alert(val); // => 2
チェックボックス
これが面倒。要素の取得方法はラジオボタンと変わらないのですが、複数選択している場合がある。jQueryで .val() でとれるのは複数ある場合は一番最初に出てくる要素の値だけ。
全部取るためには .map() でループ処理します。
HTML
JavaScript
var $checked = $('#test-checkbox [name=test-checkbox]:checked'); var valList = $checked.map(function(index, el) { return $(this).val(); }); alert(valList); // => ["2", "3"]
複数あると思われるので配列に値を入れます。
.map() の使い方は以下のドキュメントを参考にしてみてください。
セレクトボックス(単一)
option要素に目もくれず、select要素の値を取れば終わりです。
HTML
JavaScript
var val = $('#test-form [name=test-select]').val(); alert(val); // => "B"
もし This is B の部分を取ってきたい場合は以下のJavaScriptでいけます。
var text = $('#test-form [name=test-select] option:selected').text(); alert(text); // => "This is B"
セレクトボックス(複数)
複数だからまたループするのかぁと思ってたら、今回は全てjQueryがやってくれます。なんて便利なんだjQuery。さすがだよ本当。
普通に .val() しましょう。
HTML
JavaScript
var val = $('#test-form [name=test-multi-select]').val(); alert(val); // => ["B", "C"]
ちなみに何も選択されていないときは空の配列で返ってきます。注意しましょう。
フォーム要素全部
フォームの値を全て取ってくることも可能です。
form要素に対して、 .serialize() で送信すると、URLのGETみたいに URLの?以降の部分が取得出来ます。 .serializeArray() で取得すると配列に分解したものが取得出来ます。
HTML
JavaScript
var $form = $('#test-form'); var query = $form.serialize(); var arrVal = $form.serializeArray(); alert(query); // => "test-text=This+is+text.&test-multi-select=B&test-multi-select=C" alert(arrVal); // => [{name:"test-text", value:"This is text."}, 〜〜〜]
一気にformの値を全て取りたいときはこっちのほうが絶対便利。
やっぱりjQueryって便利ですね。
この記事を読んでいるあなたにおすすめ!
少し古いですがjQueryの使い方の基本はこれを読んでおけば完璧です。
オライリージャパン
売り上げランキング: 86232
更新情報はFacebookページで!
ブログの更新、読んで役立つ他ブログの記事などを更新しています。