2010-12-20 69 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

其实我在做一个类似的问题,作为一门功课,我发现这是最好尽快清除该字段的字段鼠标的土地,而不是做一个比较,如果保持不变,然后清除。