$('#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機能していません。
何か案は?
フォーカスとブラーの代わりに 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);
});
あなたの正確なコードのためにこれ:
$('#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);
});
私が最初に目にする問題は、セレクターが#lPassのIDであるにもかかわらず、そのセレクター内で同じIDの新しいタグを挿入しようとしていることです。 IDはページ上で一意である必要があります。次に、.remove()を使用して削除しようとします-私には意味がないようです。
.remove()を使用するか、新しいIDを使用してください...
または、やりたいことを明確にします。
.blurについては、blurを使用しますが、IDを修正する必要があります。または、追加したNEWフィールドをぼかしたい場合は、他の人が提案するように.live()を使用します。