【问题标题】:jQuery focus() and empty fieldjQuery focus() 和空字段
【发布时间】:2014-01-21 21:33:01
【问题描述】:

我想在选择登录字段时清空它。我正在使用 JS/jQuery-Book 并将示例完全复制到我的文档中,但它不想工作......

字段:

<input type="text" id="username" value="Username" name="username" />

jQuery:

$(document).ready(function(){
$("#username").focus(function(){
    var field = $(this);
    if(field.val() == field.attr("defaultValue")){
    field.val(""); // also tried field.val() = "";
    }
});
});

我已经在每一行之后添加了一个 alert(),我发现它没有进入 if 语句。

【问题讨论】:

  • "文本字段有一个名为 defaultValue 的属性,它表示页面首次加载时字段内的文本" - JavaScript & jQuery - The missing manual, 2012
  • 这里是 a link 到“defaultValue”文档。
  • 是的,这正是 jQuery 使用的,但为什么它不起作用?

标签: javascript jquery onfocus


【解决方案1】:

使用jQuery方法prop获取DOM属性,而不是attr

$(document).ready(function(){
    $("#username").focus(function(){
        var field = $(this);
        if(field.val() == field.prop("defaultValue")){   // or: field.val() == field[0].defaultValue
            field.val("");
        }
    });
});

【讨论】:

  • "文本字段有一个名为 defaultValue 的属性,它表示页面首次加载时字段内的文本" - JavaScript & jQuery - The missing manual, 2012
【解决方案2】:
$("#username").focus(function(){
    $(this).val("");
});

尽可能简单。

【讨论】:

  • 效果很好。但是如果你开始打小费,然后转到下一个字段,然后转到第一个字段,那么你已经输入的所有内容都将被删除......
  • 为什么不使用占位符呢?比如
【解决方案3】:

使用 .prop()(参见jsfiddle):

$("#username").focus(function(){
    var field = $(this);

    if(field.val() == field.prop("defaultValue")) {
        field.val("");
    }
});

【讨论】:

    【解决方案4】:

    试试看:

    &lt;input type="text" id="username" value="Username" name="username" defaultValue="" /&gt;

    试试看:

    $(document).ready(function(){
        $("#username").focus(function(){
            if($(this).val() === $(this).attr("defaultValue")){
                $(this).val("");
            }
       });
    });
    

    【讨论】:

      【解决方案5】:

      试试这个....

      $(document).ready(function(){
      var user = $("#username").val();
      $("#username").focus(function()
      {
      if($(this).val()==user)
      $(this).val("");
      });
      });
      

      这对我来说很好。

      【讨论】:

        【解决方案6】:

        你可以试试这个……

        $("#username").focus(function(){
        var field = $(this);
        var username=field.attr("value");
        if(field.val() == username){
            field.val(""); 
        }
        });
        

        它已经过测试并且可以与你的 attr 一起正常工作......

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-04-04
          • 2011-10-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多