これは、ChromeおよびHTML5のプレースホルダーテキストをサポートするその他のブラウザーで機能します
<input id="name" name="name" type="text" placeholder="Please enter your name..." required /> <br />
ただし、3.5以前のFirefox、明らかにIE8、および場合によっては他のブラウザでは機能しません。
すべての古いブラウザをサポートするために、同じことをどのように達成しますか(できればHTML/CSSで-提案を受け入れない場合)?すべてのブラウザではないにしても、少なくともFirefoxとIE。
SafariとChromeはすでにそれ(またはとにかく最新バージョン)をサポートしています。
ありがとう。
ちなみに...誰かが興味を持っているなら...私はSOOOニースであるjQueryプラグインであるニースエレガントなソリューションを見つけました。
これは文字通り、1行のjQuery、縮小されたjsプラグイン、および入力の単純なクラス名です。
http://labs.thesedays.com/projects/jquery/clearfield/
これは私が発見した中で最も美しいもので、htmlの「プレースホルダー」の次にあります。
いつの日か、これを適切に文書化することに取り掛かりますが、次の例を参照してください: http://dorward.me.uk/tmp/label-work/example.html
つまり、<label>
を使用して透明な<input>
の下に<div>
を配置し、背景色と境界線を指定します。
次に、JSを使用して、フォーカスに基づいてラベルを表示するかどうかを決定します。
JSが使用できない場合は、異なるスタイルを適用して、代わりに要素の横にラベルを配置します。
value
を使用する場合とは異なり、これにより、フォーカスされたコンテンツのみを表示するデバイス(スクリーンリーダーなど)がコンテンツにアクセスできなくなり、password
タイプの入力に対しても機能します。
私はこれを使用します: https://github.com/danbentley/placeholder
軽量でシンプルなjQueryプラグイン。
これが私がどこでも機能しているとわかった最も簡単な解決策です:
<input id="search"
name="search"
onblur="if (this.value == '') {this.value = 'PLACEHOLDER';}"
onfocus="if (this.value == 'PLACEHOLDER') {this.value = '';}"
/>
PLACEHOLDERを自分のものに交換してください。
現時点では、FF3は「input」要素の「placeholder」属性をまだサポートしていません。 FF4、Opera11、Chrome8は部分的にサポートしています。つまり、フィールドにプレースホルダーテキストを表示しますが、ユーザーがフィールドにフォーカスしたときに削除しません。これは、まったくサポートしないよりも悪いことです。
JQueryで作成した次のスニペットを使用します。ページ上の任意のテキストボックスにtextbox-auto-clearのクラスを追加するだけで、準備が整います。
<input type="text" value="Please enter your name" class="textbox-auto-clear" />
$(".textbox-auto-clear").each(function(){
var origValue = $(this).val(); // Store the original value
$(this).focus(function(){
if($(this).val() == origValue) {
$(this).val('');
}
});
$(this).blur(function(){
if($(this).val() == '') {
$(this).val(origValue);
}
});
});
HTML5ブラウザーのプレースホルダー属性を引き続き使用することを想定しています。その場合、ブラウザーの検出を行い、それをサポートしていないブラウザーにのみjQueryソリューションを適用する必要があります。
さらに良いことに、この回答で概説されているように、 Modernizer ライブラリを使用できます。 jQueryを介した特定のHTML 5機能のサポートの検出
これがMooToolsプラグインで、まだサポートしていないブラウザにプレースホルダーを表示します。
私はこれを使用します: https://github.com/Jayphen/placeholder この軽量でシンプルなjQueryプラグインはdanbentley/placeholderのフォークです。
利点:一時的に入力される入力フィールドにクラス「プレースホルダー」を追加します。 Css ".placeholder {color:silver}"は、ポリフィルテキストを通常の入力テキストではなくプレースホルダーのように見せます。
短所:パスワードフィールドのプレースホルダーをポリフィルしません。
秘訣は、JavaScript関数onBlur()とonFocus()を使用することです。
これが私のために働いたコードです:
<script language="javascript" type="text/javascript" >
var hint_color = "grey", field_color = null;
var hinted = true;
function hint() { // set the default text
document.getElementById('mce-EMAIL').style.color = hint_color;
document.getElementById('mce-EMAIL').value = "<?php echo SUBSCRIPTION_HINT; ?>";
hinted = true;
}
function hintIfEmpty() { // set the default text, only if the field is empty
if (document.getElementById('mce-EMAIL').value == '') hint();
}
function removeHint() {
if (hinted) {
document.getElementById('mce-EMAIL').style.color = field_color;
document.getElementById('mce-EMAIL').value = "";
hinted = false;
}
}
function send() {
document.getElementById('subscription_form').submit();
hint();
}
</script>
<div style="position:absolute; display: block; top:10; left:10; ">
<form id="subscription_form" action="<?php echo SUBSCRIPTION_LINK; ?>" method="post" target="_blank">
<input type="email" value="" name="EMAIL" class="email" id="mce-EMAIL" style="width: 122px;" onBlur="hintIfEmpty();" onFocus="removeHint();" required>
<a href="javascript:send()"><font style="position: relative; top:-1px;"><b>ok</b></font></a>
</form>
</div>
<script language="javascript" type="text/javascript" >
field_color = document.getElementById('mce-EMAIL').style.color;
hint();
</script>
SUBSCRIPTION_HINT(つまり、「あなたの電子メール」)とSUBSCRIPTION_LINK(つまり、EN mailchimp埋め込みコードの「action」タグの値...)は、ローカリゼーションに使用されるPHP定数です。
「placeholder」の場合、Firefoxで作業するには、属性を追加するだけです。
::-moz-プレースホルダー
cSSタグで。
私のために働く、あなたのCSSをに変更する
::-webkit-input-placeholder {
color: #999;
}