【问题标题】:how to create watermark effect using jquery in asp.net如何在asp.net中使用jquery创建水印效果
【发布时间】:2010-07-29 11:48:19
【问题描述】:

我得到了这个article 这样做,但我发现这不起作用,因为我在同一个文本框中给出了多个类。如何将其转换为与多个类一起使用。我不知道如何使用选择器。

我就是这样用的

<div class="inbox3full">
    <div class="threeinbg"><asp:TextBox ID="txtSortOrder" CssClass="threein water" 
            Text='<%# Bind("SortOrder") %>' runat="server" ToolTip="Type your Sort Order"></asp:TextBox></div>
</div>

jquery 为

<script type="text/javascript">
//    $(document).ready(function() { 
        $(function() {

            $(".water").each(function() {
                $tb = $(this);
                if ($tb.val() != this.title) {
                    $tb.removeClass("water");
                }
            });

            $(".water").focus(function() {
                $tb = $(this);
                if ($tb.val() == this.title) {
                    $tb.val("");
                    $tb.removeClass("water");
                }
            });

            $(".water").blur(function() {
                $tb = $(this);
                if ($.trim($tb.val()) == "") {
                    $tb.val(this.title);
                    $tb.addClass("water");
                }
            });
        });
   // });
    </script>

编辑 Sys 未定义。

.water{font-family: Tahoma, Arial, sans-serif;font-size:75%; color:black;}

<script type="text/javascript">
    $(document).ready(function() {
        $(".water").addClass('watermark');
        $(".watermark").live('focus', function() {
            $tb = $(this);
            if ($tb.val() == this.title) {
                $tb.val("");
                $tb.removeClass("water");
            }
        }).live('blur', function() {
            $tb = $(this);
            if ($.trim($tb.val()) == "") {
                $tb.val(this.title);
                $tb.addClass("water");
            }
        }).blur();​
    });

    Sys.WebForms.PageRequestManager.getInstance().add_endRequest(function() {
      $(".water").not(document.activeElement).blur();
    });
    </script>

【问题讨论】:

  • 它应该可以工作,即使它有多个类。
  • @Manticore:我明确添加了它。否则代码中没有提到它,虽然我已经尝试了这两种方法
  • 抱歉,是的,我刚发帖就看到了另一行。

标签: javascript jquery watermark


【解决方案1】:

与您拥有的 .each() 不同,只需触发 blur 处理程序会更容易,如下所示(编辑为使用 .live(),因为您将它们添加到 UpdatePanel 中):

$(function() {
  $(".water").addClass("watermark");
  $(".watermark").live('focus', function() {
    $tb = $(this);
    if ($tb.val() == this.title) {
        $tb.val("");
        $tb.removeClass("water");
    }
  }).live('blur', function() {
    $tb = $(this);
    if ($.trim($tb.val()) == "") {
        $tb.val(this.title);
        $tb.addClass("water");
    }
  }).blur();​
});

You can see it working here。如果盒子最初是空的,这通常会放入水印/标题,这通常是您想要的。此外,当您的 PanelPanel 完成时,您需要再次对这些元素调用 .blur() 以将水印应用于新创建的元素,如下所示:

Sys.WebForms.PageRequestManager.getInstance().add_endRequest(function() {
  $(".water").not(document.activeElement).blur();
});

这将模糊除当前焦点之外的所有元素,以免打断用户输入。

【讨论】:

  • @Nick:我试过上面的代码。尽管它在您显示的位置上工作,但它不适用于我的代码。 :(
  • @Shantanu - 您的元素是通过 UpdatePanel 或其他方式动态添加的吗?
  • @Nick:是的,我正在动态添加控件。并且还使用带有 ajax 3.5 的 UpdatePanel
  • @Shantanu - 那你需要使用.live(),等一下,我会更新。
  • @Nick:live() 在这两种情况下都有效还是仅在使用 updatepanel 时有效
猜你喜欢
  • 2011-12-07
  • 1970-01-01
  • 1970-01-01
  • 2012-03-10
  • 1970-01-01
  • 2011-02-16
  • 2021-11-26
  • 1970-01-01
  • 2013-04-19
相关资源
最近更新 更多