【问题标题】:Using jQuery val with AjaxToolKit's TextBoxWatermarkExtender with IE将 jQuery val 与 AjaxToolKit 的 TextBoxWatermarkExtender 与 IE 一起使用
【发布时间】:2013-08-08 19:31:29
【问题描述】:

我知道,我知道,“不要使用 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 中。

有什么想法可以实现吗?

【问题讨论】:

  • $('');需要是 $('#');
  • 只是一个错字。已更新。

标签: jquery asp.net webforms cross-browser


【解决方案1】:

您需要设置和使用水印扩展器本身的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');
}

【讨论】:

  • 这很好用——我唯一的修改是给TextBoxWatermarkExtender一个ID然后做var textboxWaterMark = $find("&lt;%= watermarkExtender.BehaviorID %&gt;");
  • 这太奇怪了,你必须这样做。行为 ID 的目的是让您不必使用服务器标签通过 javascript 访问它。但是,我并不感到惊讶。该工具包一直有点不稳定。不管怎样,很高兴它对你有用。
  • 您没有必须这样做,但这只是意味着如果您出于任何原因更改BehaviorID(或者您删除控件),那么 ID 将为更新或相应地引发错误。
猜你喜欢
  • 1970-01-01
  • 2010-09-24
  • 2014-04-23
  • 2016-04-18
  • 2015-06-16
  • 2017-04-29
  • 2010-11-28
  • 2017-10-31
  • 1970-01-01
相关资源
最近更新 更多