1

我有一个 ASP.NET 页面

  1. 1个定时器(Tick事件触发更新面板)
  2. 1 更新面板
  3. 1 个标签(在更新面板中)
  4. 1 个文本框
  5. 1个水印扩展器(用于文本框)

文本框和水印扩展器不在更新面板中,页面中还有一些其他对象,但我没有列出它们,计时器不会影响它们。当我在文本框中写东西时没有问题,但是当文本框为空并且水印扩展器在计时器滴答时处于活动状态时,水印文本正在闪烁。

可能是什么问题呢 ?。

更新面板工作正常,计时器滴答时没有其他对象受到影响,但不知何故水印文本正在闪烁。

你能帮我解决这个问题吗?

asp.net 页面:

    <script type="text/javascript">
    Sys.Application.add_load(function () {
        WebForm_OnSubmit = Sys.Extended.UI.TextBoxWatermarkBehavior._originalWebForm_OnSubmit;
    });
</script>


    <div>
        <ajaxToolkit:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server">
        </ajaxToolkit:ToolkitScriptManager>
        <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>

        <ajaxToolkit:TextBoxWatermarkExtender ID="TextBox1_TextBoxWatermarkExtender" 
            runat="server" Enabled="True" TargetControlID="TextBox1" 
            WatermarkText="Some Text">
        </ajaxToolkit:TextBoxWatermarkExtender>

        <asp:Timer ID="Timer1" runat="server" Interval="1000" ontick="Timer1_Tick">
        </asp:Timer>
        <asp:UpdatePanel ID="UpdatePanel1" runat="server">
        <ContentTemplate>
            <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
        </ContentTemplate>
        <Triggers>
        <asp:AsyncPostBackTrigger ControlID="Timer1" EventName="Tick" />
        </Triggers>
        </asp:UpdatePanel>

    </div>

代码隐藏:

protected void Timer1_Tick(object sender, EventArgs e)
{
    Label1.Text = DateTime.Now.ToLongTimeString();
}
4

1 回答 1

1

这是 WatermarkExtender 控件的设计特性。这种行为的原因是为了防止将水印文本作为目标文本框的值提交给服务器。

您可以通过在AFTER ScriptManager 控件下方添加脚本来避免此类行为:

<script type="text/javascript">
     Sys.Application.add_load(function () 
     {
          WebForm_OnSubmit = Sys.Extended.UI.TextBoxWatermarkBehavior._originalWebForm_OnSubmit;
     });
</script>

但请注意,在这种情况下,如果服务器上的水印文本框值等于水印文本,则需要明确忽略它。

于 2012-09-11T11:13:04.240 回答