ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
jQuery フォームイベントの全体像
テキストボックス・セレクトボックス・ラジオボタン・チェックボックスなど、フォーム要素の値が変わった瞬間に何かをしたい場面は山ほどあります。jQuery では主に以下の 4 つのイベントを使い分けます。
| イベント | 発火タイミング | 主な用途 |
|---|---|---|
change | 値が変わって確定した時 | セレクト / ラジオ / 完全入力後のバリデーション |
input | テキストで1 文字変更されるたび | リアルタイム検索 / 即時バリデーション |
keyup | キーが離れた瞬間 | input 非対応の古い環境の保険 |
keypress | 文字キーが押された瞬間 | 非推奨。記号や IME 入力で発火しないことあり |
change — 値の確定で発火
もっとも基本的な変更検知イベント。テキストボックスではフォーカスが外れた時、セレクトボックスやラジオボタンは選択を変えた瞬間に発火します。
// テキストボックスの change (一度、テキストボックス外をクリック等しないと発火しない)
$('#textInput').change(function() {
console.log('値が変わった:', $(this).val());
});
// セレクトボックスの change (選択した瞬間に発火)
$('#mySelect').change(function() {
var selected = $(this).val();
console.log('選択:', selected);
});
// ラジオボタンの change (チェックが変わった時)
$('input[name="gender"]').change(function() {
console.log('選択:', $(this).val());
});
// チェックボックスの change
$('#agree').change(function() {
console.log('チェック状態:', $(this).is(':checked'));
});
input — リアルタイムで発火
HTML5 で標準化されたイベント。テキストボックス / textarea / contenteditable などで値が変わるたびに毎回発火します。リアルタイム検索やプレビュー機能に最適。
// 入力 1 文字ごとに発火 (現代の主流)
$('#searchBox').on('input', function() {
var keyword = $(this).val();
console.log('入力中:', keyword);
// ここで AJAX 検索など
});
change との違い: input は確定前に発火、change は確定後に発火。リアルタイム性を求めるなら input。
keypress と keyup の違い
// keypress: キーが押された瞬間 (文字キーのみ、IME入力中は発火しない場合あり)
$('#input').keypress(function(e) {
console.log('押された:', e.which);
});
// keyup: キーが離された瞬間 (修飾キーも含む全キー)
$('#input').keyup(function(e) {
console.log('離した:', e.which);
});
キーコードを取りたい時はkeyup が安定。modern Web では keypress は非推奨です。MDN の Deprecated 一覧にも入っています。
セレクト / ラジオ / チェックボックスは change が定石
<select id="mySelect">
<option value="1">選択肢 1</option>
<option value="2">選択肢 2</option>
<option value="3">選択肢 3</option>
</select>
<input type="radio" name="gender" value="M"> 男性
<input type="radio" name="gender" value="F"> 女性
<input type="checkbox" id="agree"> 利用規約に同意// 値を取得
$('#mySelect').change(function() {
var v = $(this).val();
console.log(v); // '1' / '2' / '3'
});
// セレクトされた option のテキストも取りたい場合
$('#mySelect').change(function() {
var text = $('option:selected', this).text();
console.log(text);
});
// ラジオ: name 単位でグルーピング
$('input[name="gender"]').change(function() {
var val = $('input[name="gender"]:checked').val();
console.log(val);
});
IME (日本語入力) と仲良くする
日本語サイトでは IME 入力中はイベントが発火しない (Chrome 系) という落とし穴があります。確定後のみ処理したい場合は compositionstart / compositionend を使う:
var composing = false;
$('#searchBox')
.on('compositionstart', function() { composing = true; })
.on('compositionend', function() {
composing = false;
// IME 確定後に値を取得
triggerSearch($(this).val());
})
.on('input', function() {
if (composing) return; // IME 中は無視
triggerSearch($(this).val());
});
function triggerSearch(keyword) {
console.log('検索:', keyword);
}
複数イベントを同時バインド
テキストボックスの値をあらゆる変更タイミングで補足したい場合は、.on() で複数イベントをまとめて指定するのが便利。
// テキスト入力 / コピペ / change を全部捕捉
$('#input').on('input change paste', function() {
console.log('変更検知:', $(this).val());
});
パフォーマンスのコツ: デバウンス
input イベントは毎キーストロークで発火するため、AJAX 検索などをそのまま接続するとサーバー負荷が爆発します。デバウンス (連続呼び出しを 1 回にまとめる) で抑えるのが定石。
// シンプルなデバウンス
var timer;
$('#searchBox').on('input', function() {
clearTimeout(timer);
var val = $(this).val();
timer = setTimeout(function() {
console.log('実行:', val); // 0.3 秒タイプが止まったら実行
}, 300);
});
// lodash 等を使えば 1 行
// $('#searchBox').on('input', _.debounce(function() { ... }, 300));
jQuery を使わない modern JS の書き方
jQuery 不要時代の標準コードはこちら (参考)。
// vanilla JS
document.querySelector('#searchBox').addEventListener('input', function(e) {
console.log(e.target.value);
});
document.querySelector('#mySelect').addEventListener('change', function(e) {
console.log(e.target.value);
});
イベント別の使い分けまとめ
| やりたいこと | 選ぶイベント |
|---|---|
| セレクト / ラジオ / チェックの変更 | change |
| テキストのリアルタイム検索 | input + デバウンス |
| テキストの入力完了後のバリデーション | change or blur |
| Enter キーで送信 | keyup + e.which === 13 |
| IME 確定後に処理 | compositionend |
| コピペも含めたい | input (paste も自動的に input を発火) |
FAQ
Q: focus が外れる前にテキスト変更を検知したい
A: change ではなく input を使う。
Q: ラジオボタンの value じゃなくて選択された label が欲しい
A: $('input[name="x"]:checked').next('label').text() や、data-label 属性を仕込んでおく。
Q: チェックボックスの change が発火しない
A: JS で .prop('checked', true) しただけだと発火しない。手動で .trigger('change') を呼ぶ必要あり。
Q: 複数の input をまとめて監視したい
A: $('form').on('input change', 'input, select, textarea', function() {...}) でイベント委譲。動的追加要素にも対応。
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページはありません
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- IPv6とは|128bitアドレス・コロン16進表記/::省略・リンクローカル・SLAAC・デュアルスタック NEW 2026-06-22 12:34:44
- VPNとは|暗号トンネル・サイト間/リモートアクセス・IPsec/SSL-VPN/WireGuardを解説 NEW 2026-06-22 12:19:10
- MAC アドレスフィルタリングの仕組みと限界 | ネットワーク入門 NEW 2026-06-22 12:19:10
- WebRTC とは ブラウザ間 P2P の音声・映像・データ通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- gRPC とは HTTP/2 + Protocol Buffers の高速 RPC | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/3 (QUIC) とは UDP ベースの低遅延 Web 通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/2 とは 多重化・HPACK・バイナリフレーム | ネットワーク入門 NEW 2026-06-22 12:17:25
- Web通信プロトコル入門 HTTP/2・HTTP/3・WebSocket・gRPC・WebRTC | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebSocket とは 全二重リアルタイム通信 ws/wss | ネットワーク入門 NEW 2026-06-22 12:17:25
- ファイアウォールとは|パケットフィルタ・ステートフル・DMZ・次世代FW(L4/L7)を解説 NEW 2026-06-22 12:17:24
- iptables/nftablesとは|テーブル・チェーン・ルール例・永続化をLinux視点で解説 NEW 2026-06-22 12:17:24
- HAProxy とは frontend/backend と設定例 | ネットワーク入門 NEW 2026-06-22 12:17:24
- 証明書と認証局(CA)とは|X.509・信頼チェーン・DV/OV/EV・失効(CRL/OCSP)を解説 NEW 2026-06-22 12:17:24
- CDN とは エッジキャッシュ・TTL・Cloudflare/CloudFront | ネットワーク入門 NEW 2026-06-22 12:17:24
- TLS/SSLの仕組み|ハンドシェイク・暗号スイート・前方秘匿性・証明書検証をわかりやすく解説 NEW 2026-06-22 12:17:24
コメントを削除してもよろしいでしょうか?