input
プレースホルダーに別の要素を追加すると、form
検証および送信中に問題が発生する可能性があります。これを別の方法で解決しました。
HTML
<form id="test">
<input type="text" id="name" name="name" placeholder="Name" />
<input type="password" id="password" name="password" placeholder="Password" />
</form>
jQuery関数
function placeholder(form) {
form.wrapInner('<ul style="list-style: none; list-style-type:none; padding:0; margin: 0;">');
form.find('input[placeholder]').each(function (index, current) {
$(current).css('padding', 0).wrap('<li style="position: relative; list-style: none; list-style-type:none; padding:0; margin: 0;">');
var height = $(current).parent('li').height();
var $current = $(current),
$placeholder = $('<div class="placeholder">'+$current.attr('placeholder')+'</div>');
$placeholder.css({'color': '#AAA', 'position':'absolute', 'top': 0, 'left': 0, 'line-height': height+'px', 'margin': '0 0 0 5px', 'border': '0 none', 'outline': '0 none', 'padding': 0});
$placeholder.insertAfter($current);
$current.removeAttr('placeholder');
$placeholder.click(function(){
$current.focus()
});
$current.keypress(function(){
if($(this).val().length >= 0) {
$placeholder.hide();
}
});
$current.blur(function(){
if($(this).val().length == 0) {
$placeholder.show();
} else {
$placeholder.hide();
}
});
});
}
フォームの関数を呼び出すだけです。
placeholder($("#test"));
type="password"
これは、IE8、IE9、IE10、Google Chrome、FireFox、Safari、および Opera でテスト済みのものを含む、プレースホルダーを含むすべてのタイプの入力フィールドで機能します。