【问题标题】:jQuery clear input, textarea text on focus from dynamically added inputsjQuery清除输入,从动态添加的输入中获得焦点的textarea文本
【发布时间】:2015-03-26 00:34:11
【问题描述】:

我有 jQuery 脚本:

$("input:not(':input[type=button], :input[type=submit], :input[type=reset]'), textarea").each(function () {

var Input = $(this);
var default_value = Input.val();

$(Input).on("focus", function() {
    if(Input.val() == default_value) Input.val("");
}).on("blur", function() {
    if(Input.val().length == 0) Input.val(default_value);
});

});

如果输入已经在 html 上,它可以正常工作,但是如何使它在动态添加的输入上工作?

第一个想法是改变:

$(Input).on("focus", function()

$(document).on("focus", Input, function()

但没有运气。

更新

我想我找到了让它在任何输入上正常工作的方法:

$(document).on("focus", "input:not(':input[type=button], :input[type=submit], :input[type=reset]'), textarea", function(e) {
if (e.target.value == e.target.defaultValue) {
    e.target.value = "";
}
}).on("blur", "input:not(':input[type=button], :input[type=submit], :input[type=reset]'), textarea", function(e) {
if (e.target.value == "") {
    e.target.value = e.target.defaultValue;
}
});

【问题讨论】:

  • 你需要在创建新元素之后把它... 可以分享一下是怎么做的
  • 点击“添加”链接,当关注新输入时:jsfiddle.net/r3ag5bL8/1 只有第一个输入会删除焦点上的文本。
  • 不,只有第一个输入会删除焦点上的文本。

标签: jquery input focus dynamically-generated


【解决方案1】:

我想这就是你所追求的:

$(".url_add").on("click", function (e) {
    $(this).prev(".elements").clone().insertBefore(this);
    e.preventDefault();
});
var default_value = $('input').val();
$(document).on("focus", 'input', function () {
    if ($(this).val() == default_value) $(this).val("");
}).on("blur", 'input', function () {
    if ($(this).val().length == 0) $(this).val(default_value);
});

jsFiddle example

【讨论】:

  • 如果您集中注意力并且在不输入任何文本的情况下点击离开,这种方式会完全从新输入中删除值。
  • 你是对的。这很奇怪,看起来我在答案中遗漏了 $(this) 。已更新。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多