jQueryフォーム検証プラグインを構築しています。このスクリプトは、title 属性を使用して入力フィールドにラベルを付けます。これにより、フィールド タイトルが読めるように、入力テキストの入力パスワードが置き換えられました。
$(FormID).find('input:password').each(function() {
$("<input type='text'>").attr({ name: this.name, value: this.value, title: this.title, id: this.id }).insertBefore(this);
}).remove();
パスワード入力ボックスをクリックすると、期待どおりに機能します。次のコードは、テキスト入力をパスワード入力に置き換え、ラベルを削除し、適切なスタイルとフォーカスを適用します。
$(":input").focus(function(){//Clears any fields in the form when the user clicks on them
if ($(this).hasClass("va") ) {
$(this).val('');
$(this).removeClass("va").addClass('focused');
}
});
$(':input[title]').each(function() {//Add the title attribute to input fields and disappear when focused
if($(this).val() === '') {
$(this).val($(this).attr('title'));
}
$(this).focus(function() {
if($(this).val() == $(this).attr('title')) {
$(this).val('').addClass('focused');
}
if ($(this).attr('id')=="pass1" || $(this).attr('id')=="pass2") {
$("<input type='password'>").attr({ name: this.name, title: this.title, id: this.id }).insertAfter(this).prev().remove();
$("#"+$(this).attr('id')).focus().addClass('focused');
}
});
$(this).blur(function() {
if($(this).val() === '') {
$(this).val($(this).attr('title')).removeClass('focused');
}
if ($(this).attr('id')=="pass1" || $(this).attr('id')=="pass2") {
$("<input type='text'>").attr({ name: this.name, value: this.value, title: passtitle, id: this.id }).insertAfter(this).prev().remove();
$("#"+$(this).attr('id')).blur().removeClass('focused');
}
});
});
ユーザーがフォーカスされた入力ボックスの外側をクリックしても、ぼかし機能は起動しません。他のフォーム要素のようにぼかすにはどうすればよいですか?