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