初心者向けのjQuery入門講座|デザイナー向けのJavaScriptライブラリ

このエントリーをはてなブックマークに追加
索引
Core:コアとなる仕組み
Selectors:セレクタ
Attributes:属性
Traversing:対象の変更
Manipulation:操作
CSS:スタイルシート
Events:イベント
Effects:演出効果
Ajax:xml等との連携
Utilities:ユーティリティ
Data:データ
Miscellaneous:諸々
Deferred:処理管理
Callbacks:コールバック
Internals:内部処理

.keyup( )キーを離した時の処理を設定

構文

キーを離した時の処理を設定返値:jQueryオブジェクト
jQo.keyup( function )ver1.0〜
jQo.keyup( )ver1.0〜
jQo.keyup( object, function )ver1.4.3〜

機能

jQueryオブジェクトで指定した要素にフォーカスがあるとき、キーが離されたら引数のfunctionを実行します。引数にfunctionを設定しない場合は、要素に設定(バインド)されたfunctionを実行します。

ver1.4.3からは引数にobjectオブジェクトを設定することで、実行するfunctionにデータを渡すことができます(データはイベントオブジェクトのdataプロパティ経由で渡されます)。

keypressイベントと異なり「controlキー」「shiftキー」など文字入力に関係ないキーでもイベントが発生します。

解説

キーを離した時に実行する処理を設定

サンプル(keyup/01.html)を開いてbody内にtype属性がtextのinput要素とp要素があることを確認してください。

<input type="text" value="focus me" />
<p></p>

jQueryは以下の様に記述され、keyupメソッドの引数にfunctionの「upFunc」が設定されています。

$(function () {
	$("input").keyup(upFunc);
});

keyupメソッドの引数に設定するFunctionは以下の様な構文になっています。まず引数(イベントオブジェクト)を受け取ります。そしてキーを離したら実行したい処理を{}の中に書きます、何かをreturnする必要はありません。イベントオブジェクトは別項にまとめてあるので、そちらを確認してください。

keyupに設定するFunctionの構文
function 任意の名前(イベントオブジェクト){
 キーを離したら実行したい処理
}

サンプルkeyup/01.htmlで利用したupFuncは以下の様になっており、引数eo(イベントオブジェクト)に含まれるwhichプロパティを利用して、押したキーのキーコードを取得します。キーコードはappendメソッドを利用してp要素に追加していきます。

function upFunc(eo) {
	$("p").append(eo.which + " ");
};

結果として、input要素にフォーカスを当ててから何かキーを(押してから)離すとキーコードがp要素に追加されていきます。
イベントのfunction設定は、無名関数を利用することが多いです。→サンプル(keyup/01b.html

$("input").keyup(function (eo) {
	$("p").append(eo.which + " ");
});

他の要素に設定されたキーアップ時の処理を実行する

keyupメソッドは引数を設定しないと、要素に設定されたキーアップ時の処理を実行します。
サンプル(keyup/02.html)を開いてbody内にbutton要素が追加されたことを確認してください。

続いてjQueryを確認してください。キーアップ時の処理はkeyup/01b.htmlと同じですが、以下の処理が追加されています。この処理によってbutton要素をクリックするとinput要素に設定されたキーアップ時の処理が実行されます。

$("button").click(function(){
	$("input").keyup();
})

結果として、button要素をクリックしてもinput要素でキーを(押してから)離したのと同じように処理されます。ただしキーではないためキーコードが取れず表示されるのは「undefined」となります。

objectオブジェクトをfunctionに渡す

第1引数にobjectオブジェクトを設定することで、実行するfunctionにデータを渡すことができます。データはイベントオブジェクトのdataプロパティを介して渡されます。サンプル(keyup/03.html)を開いてbody内の構成はkeyup/01b.htmlと同じ事を確認してください。

jQueryは以下の様に記述され、keyupメソッドの第1引数にtestプロパティが10の値を持ったobjectオブジェクトが設定されています。このデータはイベントオブジェクト(eo)を通してfunctionに渡され、dataプロパティの値として取得できます。

$("input").keyup({test:10},function(eo){
	$("p").append(eo.data.test + " ");
})

結果として、input要素にフォーカスを当ててから何かキーを(押してから)離すと、第1引数で渡されたtestプロパティの値「10」がp要素に追加されます。

関連項目

キーを押した時の処理を設定したい場合はkeydownメソッドを利用します。
上記のkeydownメソッドと似たメソッドにkeypressメソッドがあります。これはキー「入力」があったときに実行する処理を設定します。つまり「controlキー」「shiftキー」など文字が入力されないキーを押しても処理が実行されません。

メモ

セレクタはinput要素以外でもOKです

keyupメソッドはinput要素以外にも利用できます。サンプル(keyup/test01.html)を開いてbody内にdiv要素が1つあることを確認してください。jQueryは以下の様に記述され、document(つまりページ)にフォーカスがあるときにキーを押すとdownFuncが実行され、キーを離すとupFuncが実行されます。このようにinput要素以外をセレクタにしても問題ありません。

$(function () {
	$(document).keydown(downFunc);
	$(document).keyup(upFunc);
});

downFuncやupFuncではcssメソッドを利用してdiv要素の背景色を変更しているだけです。結果として、ページにフォーカスがあるときキーを押すとdiv要素がオレンジ色になり、キーを離すと青に戻ります。