これは、Chromeを除くすべてのブラウザで自動的に行われます。
特にChromeをターゲットにする必要があると思います。
解決策はありますか?
でない場合、CSS、その後でjQueryの?
敬具。
これは、Chromeを除くすべてのブラウザで自動的に行われます。
特にChromeをターゲットにする必要があると思います。
解決策はありますか?
でない場合、CSS、その後でjQueryの?
敬具。
回答:
<input
type="text"
placeholder="enter your text"
onfocus="this.placeholder = ''"
onblur="this.placeholder = 'enter your text'" />
編集:すべてのブラウザがサポートするようになりました
input:focus::placeholder {
color: transparent;
}
<input type="text" placeholder="Type something here!">
Firefox 15とIE 10+もこれをサポートしています。Casey ChuのCSS ソリューションを拡張するには:
input:focus::-webkit-input-placeholder { color:transparent; }
input:focus:-moz-placeholder { color:transparent; } /* FF 4-18 */
input:focus::-moz-placeholder { color:transparent; } /* FF 19+ */
input:focus:-ms-input-placeholder { color:transparent; } /* IE 10+ */
@Hexodusと@Casey Chuの回答に基づいて、CSSの不透明度と遷移を利用してプレースホルダーテキストをフェードアウトする更新されたクロスブラウザーソリューションを次に示します。それには、プレースホルダを使用することができます任意の要素のために働くtextarea
とinput
タグ。
::-webkit-input-placeholder { opacity: 1; -webkit-transition: opacity .5s; transition: opacity .5s; } /* Chrome <=56, Safari < 10 */
:-moz-placeholder { opacity: 1; -moz-transition: opacity .5s; transition: opacity .5s; } /* FF 4-18 */
::-moz-placeholder { opacity: 1; -moz-transition: opacity .5s; transition: opacity .5s; } /* FF 19-51 */
:-ms-input-placeholder { opacity: 1; -ms-transition: opacity .5s; transition: opacity .5s; } /* IE 10+ */
::placeholder { opacity: 1; transition: opacity .5s; } /* Modern Browsers */
*:focus::-webkit-input-placeholder { opacity: 0; } /* Chrome <=56, Safari < 10 */
*:focus:-moz-placeholder { opacity: 0; } /* FF 4-18 */
*:focus::-moz-placeholder { opacity: 0; } /* FF 19-50 */
*:focus:-ms-input-placeholder { opacity: 0; } /* IE 10+ */
*:focus::placeholder { opacity: 0; } /* Modern Browsers */
編集:最新のブラウザーをサポートするように更新されました。
プレースホルダー属性を試しましたか?
<input id ="myID" type="text" placeholder="enter your text " />
-編集-
わかりました、これを試してください:
$(function () {
$('#myId').data('holder', $('#myId').attr('placeholder'));
$('#myId').focusin(function () {
$(this).attr('placeholder', '');
});
$('#myId').focusout(function () {
$(this).attr('placeholder', $(this).data('holder'));
});
});
テスト: http //jsfiddle.net/mPLFf/4/
-編集-
実際には、プレースホルダーは入力の名前ではなく値を記述するために使用する必要があるためです。次の代替案をお勧めします
html:
<label class="overlabel">
<span>First Name</span>
<input name="first_name" type="text" />
</label>
javascript:
$('.overlabel').each(function () {
var $this = $(this);
var field = $this.find('[type=text], [type=file], [type=email], [type=password], textarea');
var span = $(this).find('> span');
var onBlur = function () {
if ($.trim(field.val()) == '') {
field.val('');
span.fadeIn(100);
} else {
span.fadeTo(100, 0);
}
};
field.focus(function () {
span.fadeOut(100);
}).blur(onBlur);
onBlur();
});
css:
.overlabel {
border: 0.1em solid;
color: #aaa;
position: relative;
display: inline-block;
vertical-align: middle;
min-height: 2.2em;
}
.overlabel span {
position: absolute;
left: 0;
top: 0;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.overlabel span, .overlabel input {
text-align: left;
font-size: 1em;
line-height: 2em;
padding: 0 0.5em;
margin: 0;
background: transparent;
-webkit-appearance: none; /* prevent ios styling */
border-width: 0;
width: 100%;
outline: 0;
}
テスト:
@ casey-chuと海賊ロブの答えを補強するために、ブラウザ間の互換性のある方法を次に示します。
/* WebKit browsers */
input:focus::-webkit-input-placeholder { color:transparent; }
/* Mozilla Firefox 4 to 18 */
input:focus:-moz-placeholder { color:transparent; }
/* Mozilla Firefox 19+ */
input:focus::-moz-placeholder { color:transparent; }
/* Internet Explorer 10+ */
input:focus:-ms-input-placeholder { color:transparent; }
opacity:0;
)!このスレッドで唯一可能なすべてのブラウザーをサポートするCSSソリューション!
Toniの答えは良いですが、私はむしろドロップしID
て明示的に使用したいので、input
すべての入力がplaceholder
動作します:
<input type="text" placeholder="your text" />
これ$(function(){ });
はの省略形です$(document).ready(function(){ });
。
$(function(){
$('input').data('holder',$('input').attr('placeholder'));
$('input').focusin(function(){
$(this).attr('placeholder','');
});
$('input').focusout(function(){
$(this).attr('placeholder',$(this).data('holder'));
});
})
これを名前空間にパッケージ化し、「placeholder」属性を持つ要素で実行したい...
$("[placeholder]").togglePlaceholder();
$.fn.togglePlaceholder = function() {
return this.each(function() {
$(this)
.data("holder", $(this).attr("placeholder"))
.focusin(function(){
$(this).attr('placeholder','');
})
.focusout(function(){
$(this).attr('placeholder',$(this).data('holder'));
});
});
};
私たちが使用してきた当社では、素晴らしい答えをありがとう@Rob Fletcherに、あなたのスタイルが最強の要素で適用されていることを確認するために、SPECIFICITYが必要な場合があります。id
そのため、アプリコンテナーのIDで始まるスタイルを追加することを検討してください
#app input:focus::-webkit-input-placeholder, #app textarea:focus::-webkit-input-placeholder {
color: #FFFFFF;
}
#app input:focus:-moz-placeholder, #app textarea:focus:-moz-placeholder {
color: #FFFFFF;
}
純粋なCSSでそれは私のために働いた。入力時に入力/フォーカス時に透明にする
input:focus::-webkit-input-placeholder { /* Chrome/Opera/Safari */
color: transparent !important;
}
input:focus::-moz-placeholder { /* Firefox 19+ */
color: transparent !important;
}
input:focus:-ms-input-placeholder { /* IE 10+ */
color: transparent !important;
}
input:focus:-moz-placeholder { /* Firefox 18- */
color: transparent !important;
}
WallaceSidhréeのコードサンプルをさらに洗練するには:
$(function()
{
$('input').focusin(function()
{
input = $(this);
input.data('place-holder-text', input.attr('placeholder'))
input.attr('placeholder', '');
});
$('input').focusout(function()
{
input = $(this);
input.attr('placeholder', input.data('place-holder-text'));
});
})
これにより、各入力が正しいプレースホルダーテキストをデータ属性に確実に格納します。
jsFiddleの実際の例を参照してください。
トランジションを取り入れたCSSアプローチが好きです。フォーカスでは、プレースホルダーはフェードアウトします;)textareasでも機能します。
素晴らしいアイデアをありがとう@Casey Chu。
textarea::-webkit-input-placeholder, input::-webkit-input-placeholder {
color: #fff;
opacity: 0.4;
transition: opacity 0.5s;
-webkit-transition: opacity 0.5s;
}
textarea:focus::-webkit-input-placeholder, input:focus::-webkit-input-placeholder {
opacity: 0;
}
SCSSをhttp://bourbon.io/とともに使用すると、このソリューションはシンプルでエレガントで、すべてのWebブラウザーで機能します。
input:focus {
@include placeholder() {
color: transparent;
}
}
バーボンを使用してください!よかったですね !
このCSSは私にとってはうまくいきました:
input:focus::-webkit-input-placeholder {
color:transparent;
}
純粋なCSSベースのソリューションの場合:
input:focus::-webkit-input-placeholder {color:transparent;}
input:focus::-moz-placeholder {color:transparent;}
input:-moz-placeholder {color:transparent;}
注意: すべてのブラウザベンダーでまだサポートされていません。
参照:Ilia RaiskinによるCSSでフォーカス上のプレースホルダーテキストを非表示にします。
2018> JQUERY v.3.3解決策: すべての入力に対してグローバルに機能し、プレースホルダー付きのテキストエリア。
$(function(){
$('input, textarea').on('focus', function(){
if($(this).attr('placeholder')){
window.oldph = $(this).attr('placeholder');
$(this).attr('placeholder', ' ');
};
});
$('input, textarea').on('blur', function(){
if($(this).attr('placeholder')){
$(this).attr('placeholder', window.oldph);
};
});
});
デモはこちら:jsfiddle
これを試して :
//auto-hide-placeholder-text-upon-focus
if(!$.browser.webkit){
$("input").each(
function(){
$(this).data('holder',$(this).attr('placeholder'));
$(this).focusin(function(){
$(this).attr('placeholder','');
});
$(this).focusout(function(){
$(this).attr('placeholder',$(this).data('holder'));
});
});
}
上記のすべてに加えて、私は2つのアイデアを持っています。
palceholderを模倣する要素を追加できます。次に、JavaScriptコントロールを使用して、要素の表示と非表示を制御します。
しかし、それは非常に複雑で、もう1つはCSSの兄弟のセレクターを使用しています。
.placeholder { position: absolute; font-size: 14px; left: 40px; top: 11px; line-height: 1; pointer-events: none; }
.send-message input:focus + .placeholder { display: none; }
23333、英語が苦手です。問題を解決してください。
この機能を試してください:
+フォーカスのあるPlaceHolderを非表示にし、ぼかしで戻す
+この関数は、プレースホルダーセレクターに依存します。最初に、プレースホルダー属性を持つ要素を選択し、フォーカスで関数をトリガーし、ぼかしで別の関数をトリガーします。
フォーカス時:プレースホルダー属性から値を取得する要素に属性「data-text」を追加してから、プレースホルダー属性の値を削除します。
on blur:プレースホルダー値を返し、それをdata-text属性から削除します
<input type="text" placeholder="Username" />
$('[placeholder]').focus(function() {
$(this).attr('data-text', $(this).attr('placeholder'));
$(this).attr('placeholder', '');
}).blur(function() {
$(this).attr('placeholder', $(this).attr('data-text'));
$(this).attr('data-text', '');
});
});
input要素を調べて、舞台裏で何が起こっているのかを調べれば、よく私を追跡できます
同じことを角度5で適用しました。
プレースホルダーを保存するための新しい文字列を作成しました
newPlaceholder:string;
次に、入力ボックスでフォーカスとブラー機能を使用しました(prime ng autocompleteを使用しています)。
上記のプレースホルダーはtypescriptから設定されています
私が使用している2つの関数-
/* Event fired on focus to textbox*/
Focus(data) {
this.newPlaceholder = data.target.placeholder;
this.placeholder = '';
}
/* Event fired on mouse out*/
Blur(data) {
this.placeholder = this.newPlaceholder;
}
/* Webkit */
[placeholder]:focus::-webkit-input-placeholder { opacity: 0; }
/* Firefox < 19 */
[placeholder]:focus:-moz-placeholder { opacity: 0; }
/* Firefox > 19 */
[placeholder]:focus::-moz-placeholder { opacity: 0; }
/* Internet Explorer 10 */
[placeholder]:focus:-ms-input-placeholder { opacity: 0; }