【问题标题】:Text Hints with JQuery and JavaScript for loop带有 JQuery 和 JavaScript for 循环的文本提示
【发布时间】:2010-04-15 00:59:10
【问题描述】:

我正在开发一个小应用程序,我要求用户输入一些信息。 我想在输入字段中显示文本提示。 我在 for 循环中执行此操作... 加载页面时,提示正确显示,但“焦点”和“模糊”事件没有任何反应...

我想知道为什么当我在我的 js 代码中不使用“for 循环”时,一切正常...

顺便说一句,我使用 for 循环的原因是因为我不想重复自己遵循“DRY”原则......

感谢您的帮助!

唱片

代码如下:

<script src="/javascripts/jquery.js" type="text/javascript"></script>

<script type="text/javascript">
    var form_elements = ['#submission_url', '#submission_email', '#submission_twitter']
var text_hints = ['Website Address', 'Email Address', 'Twitter Username (optional)']

$(document).ready(function(){
    for(i=0; i<3; i++) {
      $(form_elements[i]).val(text_hints[i]);

          $(form_elements[i]).focus(function(i){
        if ($(this).val() == text_hints[i]) {
        $(this).val('');
        }
          });
          $(form_elements[i]).blur(function(i){
        if ($(this).val() != text_hints[i]) {
        $(this).val(text_hints[i]);
        }
          });
        }
    });
   </script>

【问题讨论】:

    标签: javascript jquery forms loops hints


    【解决方案1】:

    我不久前做过。它会做你想做的事

    Query.fn.waterMark = function(options) {
    
            var defaults = {
                activeColor: '#484646',
                inActiveColor: '#8E8E8E'
            };
            var settings = $.extend({}, defaults, options);
    
            return this.each(function() {
                var initVal = $(this).val();
                $(this).focus(function() {
                    if ($(this).val() === initVal) {
                        $(this).val('').css({ 'color': defaults.activeColor });
                    }
                    else { return false }
                });
                $(this).blur(function() {
                    if ($(this).val() === '' || $(this).val() === initVal) {
                        $(this).val(initVal).css({ 'color': defaults.inActiveColor });
                    }
                    else { return false }
                });
            });
        };
    

    你只需像使用它一样

    $(function() {
            $('input').waterMark();
        });
    

    它会通过读取初始值来添加水印。 所以将您的输入设置为

    <input type="text" value="Search here..." />
    

    【讨论】:

      【解决方案2】:

      伙计们!我在那里写的脚本不是我打算发布的... 无论如何,我写了另一个脚本来处理我想要完美完成的事情。

      来了!

      干杯!

      <script src="/javascripts/jquery.js" type="text/javascript"></script>
      
        <script type="text/javascript">
          if (!Array.prototype.forEach)
          {
            Array.prototype.forEach = function(fun /*, thisp*/)
            {
              var len = this.length;
              if (typeof fun != "function")
                throw new TypeError();
      
              var thisp = arguments[1];
              for (var i = 0; i < len; i++)
              {
                if (i in this)
                  fun.call(thisp, this[i], i, this);
              }
            };
          }
      
          var form_elements = ['#submission_url', '#submission_email', '#submission_twitter']
          var text_hints = ['Website Address', 'Email Address', 'Twitter Username (optional)']
      
          $(document).ready(function(){
              form_elements.forEach(function(element, index, array){ 
                  $(form_elements[index]).val(text_hints[index]);
      
                  $(form_elements[index]).focus(function(){
                      if ($(this).val() == text_hints[index]) {
                          $(this).val('');
                      }
                  });
                  $(form_elements[index]).blur(function(){
                      if ($(this).val() != text_hints[index] && $(this).val() != '') {
                          return;
                      }
                      else if ($(this).val() == '') {
                          $(this).val(text_hints[index]);
                      }
                  });
              });
          });
      
        </script>
      

      【讨论】:

        猜你喜欢
        • 2015-04-18
        • 2017-04-25
        • 1970-01-01
        • 1970-01-01
        • 2012-03-19
        • 1970-01-01
        • 2012-10-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多