ログインフォームでは、ラベルなしで作成し、プレースホルダーテキストを使用して、ユーザーが何を入力するかを理解できるようにしようとしています。
Q:パスワードがプレースホルダーのみに読み取り可能なテキストで表示されるように、以下のコードを変更するにはどうすればよいですか?
注:私はパスワードマスクプラグインも使用しているので、これはiPhoneのように機能します。jsfiddleとしての完全な例。
/**
* @preserve jquery.outofplace.js
* HTML5 placeholders for all browsers
* Copyright (c) 2010 timmy willison
* Dual licensed under the MIT and GPL licenses.
* http://timmywillison.com/licence/
*/
$.fn.outOfPlace = function (opts) {
opts = $.extend({
// Gives you control over the submit function if needed
// The default function removes the placeholder before
// submitting the form in case the field is not required client-side
submit: function () {
$(this).find('input, textarea').each(function () {
var $input = $(this);
if( $input.val() === $input.data('placeholder') ) {
$input.val('');
}
});
return true;
},
// The placeholder class for setting
// placeholder styles in your own css
// e.g. input.place { color: #666666; }
// This creates a lot more flexibility for you and
// keeps the js lightweight
placeClass: 'place'
}, opts);
/** Checks for browser autofill */
function check_autofill ( $input ) {
setTimeout(function() {
var v = $input.val();
if ( v === $input.data('placeholder') ) {
$input.addClass( opts.placeClass );
} else {
$input.removeClass( opts.placeClass );
}
}, 300);
}
return this.each(function () {
var $input = $(this),
defaultText = $input.attr('placeholder') || '';
// Set the placeholder data for future reference
$input.data('placeholder', defaultText);
// Attribute no longer needed
$input.removeAttr('placeholder');
// Focus and blurs, notice the class added and removed
$input.focus(function () {
if ( $input.val() === defaultText ) {
$input.val('').removeClass( opts.placeClass );
}
}).blur(function () {
if ( $.trim($input.val()) === '' ) {
$input.val( defaultText ).addClass( opts.placeClass );
}
}).blur()
// Bind the submit function
.closest('form').submit( opts.submit );
check_autofill( $input );
});
};