2010-12-20 65 views
2

由於某些原因onblur和onfocus屬性不起作用。我定義它們是對的嗎?onFocus和onBlur

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;}; 

我也試圖把在報價

+0

其實它應該工作。我不知道爲什麼它不? – Pratik 2010-12-20 07:47:15

+0

沒有設置defaultValue。還有一些關閉是在匿名函數內完成的,其中'this.value'比'replyTxt.value'更好的選擇。 – mplungjan 2010-12-20 08:05:22

回答

2

事件工作"function(){if(replyTxt.value==replyTxt.defaultValue) replyTxt.value='';}" - 所以有可能是一個問題,你的邏輯......

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

你在哪裏設置replyTxt.defaultValue?在你的例子中,你不會 - 所以邏輯永遠不會開火。試試這個...

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 2010-12-20 08:02:53

1

只是一個提示: 嘗試在你的事件函數與this更換replyTxt

+0

這很重要!但它似乎確實工作。也許是關閉? – mplungjan 2010-12-20 08:01:51

0

嘗試setAttribute。有關功能的更多信息,看看這個link

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

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

爲什麼你將函數調用包裝在一個字符串中?不要這樣做。永遠。再次。 – Savageman 2010-12-20 08:03:43

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

其實我在做一個類似的問題,作爲一門功課,我發現這是最好儘快清除該字段的字段鼠標的土地,而不是做一個比較,如果保持不變,然後清除。