代码之家  ›  专栏  ›  技术社区  ›  andreialecu

jQuery带水印的输入和验证

  •  5
  • andreialecu  · 技术社区  · 16 年前

    在HTML页面上,我有一个输入框,当它为空时,它上面有一个“水印”。(例如:“在此处输入文本…”)。有点像这样: http://digitalbush.com/projects/watermark-input-plugin/ -但是习惯写的。

    问题是我不知道如何用jQuery验证插件验证这个字段( http://docs.jquery.com/Plugins/Validation/ )因此,它将我的水印文本视为字段为空。

    我在jQuery验证器中找不到允许我为字段有效时指定自定义规则的选项,有吗?我可以找到允许我指定字段 需要

    我错过了什么?

    5 回复  |  直到 16 年前
        1
  •  6
  •   andreialecu    16 年前

    感谢Kazar为我提供了链接,我想出了以下解决方案(如果有人感兴趣):

        function notWatermark(value, element){
            return value != 'enter text...';
        }
    
        $.validator.addMethod("notWatermark", notWatermark, "Field cannot be empty.");
    
        $('#SearchForm').validate({
            rules: {
                SomeField: {
                    required: true,
                    notWatermark: true
                }
             },
    
        2
  •  5
  •   James Moberg    14 年前

    我将水印插件用于jQuery,但我的情况与此类似:

    http://code.google.com/p/jquery-watermark/

    它使用一个类名来显示水印。(我不确定DigitalBrush版本是否使用类。)我修改了上面的函数,使用jQuery的hasClass()函数,根据当前分配的类确定字段是否计算为“空”。

    function notWatermark(value, element){
     return !$(element).hasClass("waterMarkClass");
    }
    $.validator.addMethod("notWatermark", notWatermark, "Required.");
    
        3
  •  3
  •   Alistair Evans    16 年前

    查看此博客帖子:

    http://randomactsofcoding.blogspot.com/2008/10/starting-with-jquery-how-to-write.html

    告诉您如何为字段构造自定义验证规则。

        4
  •  1
  •   Chris    14 年前

    function noWatermark(value, element) {
            return value.toLowerCase() != element.defaultValue.toLowerCase();
        }
    
    $.validator.addMethod("noWatermark", noWatermark, "required.");
    

    这也会从脚本中删除硬编码文本。

        5
  •  0
  •   Brett Weber    12 年前

       var SetWatermark = function( oElemToWatermark, sWatermark )
       {
          var CheckFocus = function(oEvent)
          {
             var oElem = $(this);
    
             if ( oElem.val() == oElem.data("Watermark") )
                oElem.val("").css("color", "");
          }
    
          var CheckBlur = function(oEvent)
          {
             var oElem = $(this);
    
             if ( oElem.val().length == 0 )
                oElem.val( oElem.data("Watermark") ).css("color", "Grey");
          }
    
          // HTML5 (simple route)
          if ( oElemToWatermark[0].placeholder != undefined )
             oElemToWatermark[0].placeholder = sWatermark;
    
          // pre HTML5 (manual route)
          else if (oElemToWatermark.data("Watermark") == undefined)
             oElemToWatermark  .data("Watermark", sWatermark)
                               .val(sWatermark)
                               .on("focus", CheckFocus )
                               .on("blur",  CheckBlur  );
       }
    
       var GetWatermarkText = function(oElem)
       {
          if (oElem[0].plaeholder != undefined)
             return oElem[0].placeholder;
          else if ( oElem.data("Watermark") != undefined )
             return oElem.data("Watermark");
          else
          { 
             alert("The element " + oElem[0].id + " does not have a Watermark value.");
             return "";
          }
       }
    
       var GetWatermarkValue = function(oElem)
       {
          var sVal       = oElem.val();
          var sWatermark = oElem.data("Watermark");
    
          if (oElem[0].placeholder   != undefined 
          ||  sWatermark             == undefined 
          ||  sWatermark             != sVal)
             return sVal;
          else if (sVal == sWatermark)
             return "";
       }