jQuery清除输入法,从动态添加的输入法中清除textarea文本上的焦点。

问题描述 投票:0回答:1

我有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;
}
});
jquery input focus dynamically-generated
1个回答
0
投票

我想这就是你想要的。

$(".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例子

© www.soinside.com 2019 - 2024. All rights reserved.