使用jQuery val和AjaxToolKit的TextBoxWatermarkExtender和IE

时间:2013-08-07 12:15:11

标签: jquery asp.net webforms cross-browser

我知道,我知道,“不要使用AjaxToolKit”......但我认为我坚持使用它。

如果我有以下内容:

<asp:TextBox runat="server" ID="textBox" />
<asp:TextBoxWatermarkExtender runat="server
    TargetControlID="textBox"
    WatermarkText="Text" />

var textBoxSelector = $(#'<%= textBox.ClientID %>');

然后这不起作用(即它改变了水印文本而不是所需的文本)

textBoxSelector.val('example text');

但是我在Chrome中发现了这一点:

textBoxSelector.focus();
textBoxSelector.val('example text');

但不是在Internet Explorer中。

有任何想法如何实现这个?

1 个答案:

答案 0 :(得分:2)

您需要设置和使用水印扩展器本身的behaviorid。

<asp:TextBox runat="server" ID="textBox" />
<asp:TextBoxWatermarkExtender runat="server
    TargetControlID="textBox" BehaviorID="textboxWaterMark"
    WatermarkText="Text" />

然后使用$find()访问该对象和set_Text()

var textboxWaterMark = $find("textboxWaterMark");
textboxWaterMark.set_Text('example text'); 

如果$find()返回null,则可能必须等到页面加载完毕。不使用jQuery,而是使用工具包

Sys.Application.add_load(MyFunction);
function MyFunction() {
    var textboxWaterMark = $find("textboxWaterMark");
    textboxWaterMark.set_Text('example text');
}