【问题标题】:TextBoxWatermarkExtender WatermarkCssClass overwrites TextBox CssClassTextBoxWatermarkExtender WatermarkCssClass 覆盖 TextBox CssClass
【发布时间】:2014-03-12 10:26:22
【问题描述】:

如果您在具有 CssClass 属性的 TextBox 控件上设置 CSS 类,则使用具有 WatermarkCssClass 属性的 TextBoxWatermarkExtender 定位该 TextBox 将导致其丢失其 CSS 类,即,它将类属性重置为水印文本,而不是将其添加为附加类:

<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" />

【问题讨论】:

    标签: asp.net css ajaxcontroltoolkit watermark


    【解决方案1】:

    我查看了由 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>
    

    参考:ASP.NET Ajax life cycle

    通用...也许您可以尝试使用“.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>
    

    【讨论】:

    • 有没有通用的解决方案?单页中可用的文本框太多,应用程序中的页面太多。否则我需要为所有文本框添加类,这将是一个开销!
    猜你喜欢
    • 2015-02-21
    • 1970-01-01
    • 1970-01-01
    • 2012-08-25
    • 1970-01-01
    • 1970-01-01
    • 2014-04-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多