JavaScript の基本を理解していないようです。
まず、JS の変数は関数のスコープにローカライズされているため、var
ある関数で変数を宣言して、別の関数で変数にアクセスすることはできません。
第二に、event-object を除いて、DOM イベント ハンドラーには何も渡すことができません。これは DOM 仕様で定義されています。場合によっては、event data
パラメーターをblur
jQuery メソッドに使用できます。
これを試して:
jQuery(document).ready(function(){
var defaultValue;
jQuery("#nameInput, #emailInput, #webInput").focus(function(){
defaultValue = jQuery(this).val();
jQuery(this).val("");
})
.blur(function(){
if(jQuery(this).val() == ""){
jQuery(this).val(defaultValue);
}
});
});
まず、blur
メソッド (関数) とhandler
への引数である (関数) を区別する必要がありますblur
。ハンドラーに正確に渡そうとしましたdefaultValue
が、それはできません。内部ハンドラーはdefaultValue
equaleventObject
になるため、smth likeconsole.log(defaultValue.timeStamp)
を実行すると、smth like が表示されます。123482359734536
あなたのアプローチでは、の呼び出し時に設定される原因にevent.data
引数を使用することさえできません(ハンドラーのアタッチ)。両方のハンドラーの外側で宣言する必要があるため、両方に表示されますblur
blur
var
JS に関する包括的な本を読むことを検討してください。
Nicolas Zakas による「Web 開発者向けのプロフェッショナルな JaveScript」を読みました。新刊あります