我有一个多行的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" />
有没有人知道为什么这不起作用?
答案 0 :(得分:1)
实际上,您正在创建一个html元素,并且您正在附加一个事件。 此外,ASP.NET控件不使用服务器端ID。 这是你应该做的:
var controlMsg = document.getElementById('<%= txtMessage.ClientID %>');
controlMsg.onfocus = // Some Code ...
controlMsg.onblur = // Some Code ...
答案 1 :(得分:1)
尝试使用匿名函数,如下所示:
controlMsg.onfocus=function() { if ( ...
Functions and function scope - MDN
另外,你确实打了document.body.appendChild(controlMsg);
这样的话,不是吗?
修改强>
您正在使用doc.createElement
。确保doc
明确指向document
。
另外,请查看Firefox中的页面,查看错误控制台中是否有任何错误或警告。
答案 2 :(得分:0)
不确定您使用的是哪个版本。请试试这个:
protected void Page_Load(object sender, EventArgs e)
{
txtMessage. Attributes["onfocus"]="JavascriptMethod";
}