2010-12-20 8 views
2

何らかの理由で、onblurとonfocusプロパティが機能しません。私はそれらを正しく定義していますか?引用onFocusとonBlur

+0

実際には動作するはずです。 – Pratik

+0

defaultValueの設定がありません。また、 'this.value'が' replyTxt.value'よりも良い選択となる無名関数の中で何らかの閉鎖が行われました – mplungjan

答えて

2

イベントは仕事で

var replyTxt = document.createElement("input"); 
    replyTxt.id="replyTxt"; 
    replyTxt.type="text"; 
    replyTxt.value="Write a reply"; 

    replyTxt.onfocus = function(){if(replyTxt.value==replyTxt.defaultValue) replyTxt.value='';}; 
    replyTxt.onblur= function(){if(replyTxt.value=='') replyTxt.value=replyTxt.defaultValue;}; 

私も入れて試してみました"function(){if(replyTxt.value==replyTxt.defaultValue) replyTxt.value='';}" - ので、あなたのロジックに問題がある可能性があります...あなたはreplyTxt.defaultValueを設定するのです

if(replyTxt.value==replyTxt.defaultValue) replyTxt.value=''; 

?あなたの例では、あなたはそうしません - 論理は決して発動しません。 あなたのイベント関数にthisreplyTxtを交換してください:ちょうどヒント

var replyTxtDefaultText = "Write a reply"; 
var replyTxt = document.createElement("input"); 
    replyTxt.id="replyTxt"; 
    replyTxt.type="text"; 
    replyTxt.value=replyTxtDefaultText; 

    replyTxt.onfocus = function(){if(replyTxt.value==replyTxtDefaultText) replyTxt.value='';}; 
    replyTxt.onblur= function(){if(replyTxt.value=='') replyTxt.value=replyTxtDefaultText;}; 
+1

これを使用します。関数内のreplyTxtの代わりにそれを行う適切な方法です。 – mplungjan

1

...これを試してみてください。

+0

これは重要です!しかし、それは関係なく動作するように見えます。おそらく閉鎖? – mplungjan

0

try setAttribute。関数に関する詳細はこちらをご覧くださいlink

var replyTxt = document.createElement("input"); 
replyTxt.setAttribute('onFocus', 'focusFunction()'); 

function focusFunction() 
{ 
    if(replyTxt.value==replyTxtDefaultText) 
     replyTxt.value=''; 
} 
+0

文字列の中で関数呼び出しをラップするのはなぜですか?それをしないでください。これまで再び。 – Savageman

0

そして、何かに追加してください。

<form id="x"> 
</form> 
<script> 
window.onload=function() { 
    var replyTxt = document.createElement("input"); 
    replyTxt.id="replyTxt"; 
    replyTxt.type="text"; 
    replyTxt.value=replyTxt.defaultValue="Write a reply"; 
    replyTxt.onfocus = function(){if(this.value==this.defaultValue) this.value='';}; 
    replyTxt.onblur= function(){if(this.value=='') this.value=this.defaultValue;}; 

    document.getElementById('x').appendChild(replyTxt); 
} 
</script> 
-1

実際に私が宿題として同様の問題に取り組んでいたと私はそれが、すぐにフィールド上でマウスの土地としてではなく、そのまま放置しておくと比較を行うフィールドをクリアし、それをクリアすることをお勧めしてい。

関連する問題