0

我有一个多行 asp.textbox 输入控件。

我不知道我的问题是与 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" />

有没有人看到为什么这不应该工作的原因?

4

4 回答 4

1

实际上,您正在创建一个 html 元素,并且正在向它附加一个事件。此外,ASP.NET 控件不使用服务器端 id。这是你应该做的:

var controlMsg = document.getElementById('<%= txtMessage.ClientID %>');
controlMsg.onfocus = // Some Code ...
controlMsg.onblur = // Some Code ...
于 2012-07-31T01:19:04.987 回答
1

尝试使用匿名函数,如下所示:

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

功能和功能范围 - MDN

另外,您确实调用了类似的东西document.body.appendChild(controlMsg);,不是吗?

编辑:

您正在使用doc.createElement. 确保doc绝对指向document.

此外,查看 Firefox 中的页面,查看错误控制台中是否有任何错误或警告。

于 2012-07-31T04:00:46.550 回答
0

不确定您使用的是哪个版本。请试试这个:

protected void Page_Load(object sender, EventArgs e)  
 {
   txtMessage. Attributes["onfocus"]="JavascriptMethod";  
 }
于 2012-07-31T04:29:20.580 回答
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>

文本可能很长,控件似乎并不在意。此外,文本只写在一个位置。

于 2012-08-17T11:07:08.670 回答