コードが実行されず、別のコードをクリックしたときに値をクリアしたい
私は何を間違っていますか?
var placeholderText = $('input').val();
$(placeholderText).focus(function() {
$(this).attr('value', "");
});
$(placeholderText).blur(function() {
$(this).attr('value', phTextVal);
});
コードが実行されず、別のコードをクリックしたときに値をクリアしたい
私は何を間違っていますか?
var placeholderText = $('input').val();
$(placeholderText).focus(function() {
$(this).attr('value', "");
});
$(placeholderText).blur(function() {
$(this).attr('value', phTextVal);
});
「placeholderText」をセレクターとして使用していますが、何も選択されません。代わりに$('input').focus(...
andを使用してください。$('input').blur(...
アップデート
既存の値を保存してから置き換える場合.data()
は、<input>
要素自体に保存します。
$('input').focus(function() {
$this = $(this);
$this.data('oldval',$this.val());
$this.val('');
});
$('input').blur(function() {
$this = $(this);
$this.val($this.data('oldval'));
});
http://jsfiddle.net/mblase75/AL2vS/12/
またはおそらく:
$('input').blur(function() {
$this = $(this);
if ($this.val().length==0) { // only if the field is blank
$this.val($this.data('oldval'));
};
});
object.defaultValueプロパティを使用するのはどうですか?
働き:
$.fn.smartInput=function(){
return this.each(function(i,o){
$(o).focus(function(){ if(this.value==this.defaultValue) this.value='';})
.blur(function(){ this.value=(this.value=='')?this.defaultValue:this.value;});
});
}
利用方法:
$('input').smartInput();
私はより良い方法は次のとおりだと思います:
var placeholderText = $('input');
$(placeholderText).focus(function() {
phTextVal = $(this).val();
$(this).val("");
}).blur(function() {
$(this).val(phTextVal);
});
見てみな、
$('input').focus(function() {
placeholderText = $('input').val();
$(this).val("");
});
$('input').blur(function() {
$(this).val(placeholderText);
});
入力されたデータを使って何かをする必要があります。
こんな感じですか?
これにより、少なくともテキストの削除が機能します。
var placeholderText = $('input');
placeholderText.focus(function() {
$(this).attr('value', "");
});
placeholderText.blur(function() {
$(this).attr('value', phTextVal);
});
HTML5プレースホルダーの paramを確認することもできます。