【问题标题】:Clear input, textarea on blur and default if field is blank清除输入,模糊的文本区域,如果字段为空白则默认
【发布时间】:2016-02-25 15:13:13
【问题描述】:

我正在尝试清除两个分配了类的输入字段,以及一个在模糊时分配了默认值的类的文本区域,并且仅当该字段退出时该字段为空白时才将其返回为默认值。如果用户包含了他们自己的文本,我要求保留。

这是我目前所拥有的:

$("input, textarea").focus(function() {
this.value = "";
});

$(".namefield").on("blur", function() {
$(this).val("Name");
});

$(".emailfield").on("blur", function() {
$(this).val("Email");
});

$(".messagefield").on("blur", function() {
$(this).val("Message");
});

【问题讨论】:

  • 请澄清您的具体问题或添加其他详细信息以准确突出您的需要。正如目前所写的那样,很难准确地说出你在问什么。
  • HTML placeholder 属性将为您完成所有这些工作。这是一个选择吗? w3schools.com/tags/att_input_placeholder.asp
  • 我有一个通过 Wordpress 中的插件构建的表单,它生成 HTML,所以很遗憾,我不能包含占位符属性。我在需要删除焦点的字段(名称、电子邮件、消息)中设置默认值,并且仅当用户退出该字段而不添加新值时才重新出现在该字段中。但如果字段中添加了新值,我需要保留它。

标签: javascript input focus textarea blur


【解决方案1】:

首先快速说明一下,HTML placeholder 属性将完全按照您的本机描述进行。如果可能的话,我会鼓励将其作为首选。实现将是:

<input type="text" class="namefield" placeholder="Name" />

更多阅读在这里:http://www.w3schools.com/tags/att_input_placeholder.asp

 

如果你不能为元素添加属性,但你已经设置了值,你可以使用 jQuery 动态添加属性。你可以使用我们最初谈到的 jQuery 方法,也可以添加 placeholder 属性。

 
这是两个示例,我还用一个工作示例更新了 JS Fiddle。

使用占位符

$(document).ready(function() {
    $("input, textarea").each(function() {    
        $(this).attr('placeholder',$(this).val());
        $(this).val('');
    })
})

将 data-default 与原始答案结合使用

$(document).ready(function() {
    $("input, textarea").each(function() {    
        $(this).data('default',$(this).val());
    })
})

原答案:

如果您仍然需要使用 jQuery,您可以设置和检查状态并将其与默认值进行比较。这样的事情会起作用:

HTML

<input type="text" class="namefield" data-default="Name" value="Name" />
<input type="text" class="emailfield" data-default="Email" value="Email" />

JavaScript

$(document).ready(function() {
  $("input, textarea").focus(function() {
    if($(this).data('default') == $(this).val()) {
      $(this).val('');
    }
  });


  $("input, textarea").blur(function() {
    if($(this).val() == '') {
      $(this).val($(this).data('default'));
    }
  });
})

你可以在这个 JS Fiddle 中看到它的工作原理:https://jsfiddle.net/77Lk4kep/1/

希望有帮助!

【讨论】:

  • 不幸的是,我无法将 data-default 添加到输入标签。我的表单是通过 Wordpress 插件生成的,所以我只能添加一个类和值。这是我可以使用的输入标签的示例。 &lt;input type="text" name="vfb-11" id="vfb-11" value="Name" class="vfb-text vfb-medium namefield"&gt;
  • @user2109237 很简单,你可以使用jQuery从value动态添加placeholder属性。通过一些工作,您可能可以从一开始就更新 wordpress 插件中的 php 以包含 placeholder 属性。我用一个新的例子更新了答案。希望有帮助!
  • 谢谢!添加placeholder 产生了奇迹,但现在这些领域并没有明确焦点。我试图将您的解决方案与我的原始解决方案配对,但没有成功。有什么想法吗?
  • 如果您使用 jquery 添加 placeholder,则需要删除您尝试过的另一个 jquery - 它向字段添加值并且不再需要。
  • 是的,我已经这样做了,结果是当我关注该字段时,光标位于默认值的开头,如果我键入它会被替换,但是它仍然可见我首先进入该领域。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-06-29
  • 2011-02-28
  • 1970-01-01
  • 2020-03-20
  • 1970-01-01
  • 1970-01-01
  • 2018-05-21
相关资源
最近更新 更多