2012-07-31 48 views
0

我有一個多行asp.textbox輸入控件。Onblur,Onfocus JavaScript的TextMode =「MultiLine」不工作

我不知道我的問題是用ASP.NET,Multiline控件還是其他的,但onblur和onfocus不起作用。

<script type="text/javascript"> 
    var defaultMsg = 'Write your message here or or call my voice at (xxx) xxx-xxxx.'; 
    var controlMsg = doc.createElement("input"); 
    controlMsg.id = "txtMessage"; 
    controlMsg.type = "text"; 
    controlMsg.value = defaultMsg; 
    controlMsg.onfocus=function jpFocus() { if (this.value == defaultMsg) this.value = ''; } 
    controlMsg.onblur=function jpBlur() { if (this.value == '') this.value = defaultMsg; } 
</script> 

後來....

<asp:TextBox ID="txtMessage" Columns="30" Rows="6" runat="Server" TextMode="MultiLine" /> 

有誰看到一個原因,這不應該工作?

回答

0

我不知道爲什麼這個工作和其他技術沒有,但是這讓我的HTML工作:

<textarea name="txtMsg" rows="6" cols="30" 
     onfocus="if(this.value==this.defaultValue)this.value='';" 
     onblur="if(this.value==='')this.value=this.defaultValue;">[Write your message here or call my voice number at (555) 222-1234.]</textarea> 

文本可能很長,並且控件似乎不在乎。另外,文本只能寫入一個位置。

1

其實,你正在創建一個html元素,你正在附加一個事件。 另外,ASP.NET控件不使用服務器端標識。 這裏是你應該做的:用

var controlMsg = document.getElementById('<%= txtMessage.ClientID %>'); 
controlMsg.onfocus = // Some Code ... 
controlMsg.onblur = // Some Code ... 
+0

這仍然無法正常工作。我已經嘗試了幾種變化,我的網頁對我所做的任何事都不滿意。我只注意到我改變了我的文字,但舊文本仍在顯示。也許我的本地主機緩存數據,並沒有顯示我的最新變化。 – jp2code 2012-07-31 01:45:40

1

嘗試一個匿名函數,像這樣:

controlMsg.onfocus=function() { if (... 

Functions and function scope - MDN

此外,你確實打電話像document.body.appendChild(controlMsg);,是不是?

編輯:

您正在使用doc.createElement。確保doc明確指向document

另外,請查看Firefox中的頁面,並查看錯誤控制檯中是否有任何錯誤或警告。

+0

你可能會遇到某些事情。我有某種[客戶端驗證腳本被轉儲到屏幕](http://stackoverflow.com/questions/11751725)。你會不會理解功能和範圍是否會造成這種情況? – jp2code 2012-08-02 15:55:20

0

不知道你是哪個版本using.Please試試這個:

protected void Page_Load(object sender, EventArgs e) 
{ 
    txtMessage. Attributes["onfocus"]="JavascriptMethod"; 
}