如果在具有CssClass属性的TextBox控件上设置CSS类,则使用具有WatermarkCssClass属性的TextBoxWatermarkExtender定位该TextBox将导致其丢失其CSS类,即,它将class属性重置为水印文本,而不是将其作为附加类添加:
<asp:TextBox ID="TextBox1" runat="server" CssClass="text" />
<ajax:TextBoxWatermarkExtender ID="TextBoxWatermarkExtender1" runat="server" TargetControlID="TextBox1" WatermarkCssClass="watermark" />
作为输出
<input type="text" class="text" />
变为
<input type="text" class="watermark" />
当水印样式生效而不是
时<input type="text" class="text watermark" />
有人可以建议解决方法吗?
请不要在解决方法下面建议,因为我需要添加TextBox CssClass运行时。我已经通过javascript添加了TextBox CssClass,但仍然TextBoxWatermarkExtender WatermarkCssClass覆盖了文本框类。
设置WatermarkCssClass属性以包含两个类:
<asp:TextBox ID="TextBox1" runat="server" CssClass="text" />
<ajax:TextBoxWatermarkExtender ID="TextBoxWatermarkExtender1" runat="server" TargetControlID="TextBox1" WatermarkCssClass="text watermark" />
答案 0 :(得分:0)
我查看了asp.net ajax发出的JS,以及创建WaterMarkExtender的方法。
Sys.Application.add_init(function() {
$create(Sys.Extended.UI.TextBoxWatermarkBehavior, {"ClientStateFieldID":"TextBoxWatermarkExtender1_ClientState","WatermarkCssClass":"watermark","WatermarkText":"Hello","id":"TextBoxWatermarkExtender1"}, null, null, $get("TextBox1"));
})
所以我认为你可以在应用程序初始化事件之后修改tb的类。
<script type="text/javascript">
Sys.Application.add_load(appl_load); //register load handler
//load handler
function appl_load() {
$("#TextBox1").addClass("text");
}
</script>
Generic ...您可以尝试使用“.class”或“input”查找输入。它取决于整体UI,因为您在问题中提到在运行时将CssClass添加到文本框中。 我能想到的另一种方法是反向操作,即获取具有水印类的所有输入,然后添加文本类。
<script type="text/javascript">
Sys.Application.add_load(appl_load); //register load handler
//load handler
function appl_load() {
$(".watermark").addClass("text");
}
</script>