$('#lPass').focus(function() {
if (this.value == this.defaultValue) this.value = '';
$(this).after('<input type="password" id="lPass" size="10" value="'+this.value+'"/>').remove();
}).blur(function() {
alert(1);
});
<input id="lPass" type="text" size="10" value="Password"/>
onblur 无效。
有什么想法吗?
答案 0 :(得分:26)
使用live代替焦点和模糊
因为你是在运行时添加输入,所以它添加到没有事件的页面,live:
为所有人附加一个处理程序 与当前相匹配的元素 选择器,现在或将来。
示例:强>
$('#lPass').on('focus', function() {
if (this.value == this.defaultValue) this.value = '';
$(this).after('<input type="password" id="lPass" size="10" value="' + this.value + '"/>').remove();
});
$('#lPass').on('blur', function() {
alert(1);
});
答案 1 :(得分:2)
这是您的确切代码:
$('#lPass').live('focus', function() {
if (this.value == this.defaultValue) this.value = '';
$(this).after('<input type="password" id="lPass" size="10" value="'+this.value+'"/>').remove();
}).live('blur', function() {
alert(1);
});
答案 2 :(得分:2)
我看到的第一个问题是您的选择器是#lPass的ID,但是,在该选择器中,您尝试插入具有相同ID的新标签。 ID必须在页面上是唯一的。那么你试图用.remove()删除 - 似乎对我没有任何意义。
只需使用.remove()或使用新的ID ...
或澄清你想做什么。
对于.blur,只需使用模糊,但必须修复ID,或者如果您希望模糊添加的新字段,请使用其他人建议的.live()。