2010-11-18 9 views
1

テキストフィールド(HTMLフォーム)をクリックして何かを書き込むにはどうすればよいですか?JQueryを空にするテキストフィールドをクリックしたとき

擬似コード:

On click #searchform 
Erase String in #searchform 
+0

は、なぜあなたはそれをしたいですか?何か間違った入力をして編集したい場合はどうすればよいですか?テキストフィールドに元のテキスト(検索キーワードを入力するなど)が含まれている場合、そのテキストフィールドをクリックすると削除されるはずです。右? – tbleckert

+0

@tbleckert確かに。私はそれが標準的なusabillityものだと思う。だから、ユーザが怒られるように条件分岐を必要とする。 – Tomkay

+0

なぜHTML 5プレースホルダ属性を使わないの? –

答えて

4

Try it here

$('#searchform').click(function() { 
    if ($(this).val() == 'Enter search term') { 
     $(this).data('original', $(this).val()).val(''); 
    } 
}); 

$('#searchform').blur(function() { 
    if ($(this).val() == '') { 
     $(this).val($(this).data('original')); 
    } 
}); 

EDIT今のところ、あなたはplaceholder属性を使用する必要がありますし、あなたがしたい場合は、不足しているためポリフィルとして上記を使用しますプレースホルダのサポート。

if (!('placeholder' in document.createElement('input'))){ 
    $('input[placeholder]').each(function() { 
     $(this).placeholder(); 
    }); 
} 

元のコードをプラグインに変えて、簡単に使用できるようにします(いくつかの小さな改造機で)。

jQuery.fn.placeholder = function() { 
    return this.each(function() { 
     var value = $(this).attr('placeholder'); 
     jQuery(this).val(value).addClass('placeholder'); 
     jQuery(this).focus(function() { 
      if (jQuery(this).val() == value) { 
       jQuery(this).val('').removeClass('placeholder'); 
      } 
     }); 

     jQuery(this).blur(function() { 
      if (jQuery(this).val() == '') { 
       jQuery(this).val(value).addClass('placeholder'); 
      } 
     }); 
    }); 
}; 
+0

この方法で検証を追加するのは難しいです。フィールドが必要であると想像してください。次に、必要なフィールドバリデーターは初期値を除外しなければなりません。また、プレースホルダ(または少なくとも異なる色)に異なるフォントを使用したいと考えている場合は、クラスをtoggleする必要があります。私は 'placeholder'属性が行く方法だと思います。 –

+0

そうですが、これは2010年に行われました。プレースホルダが知られておらず、ブラウザによく実装されていました。もちろん、今は別の時です。しかし私は自分の答えを更新すべきです。 – tbleckert

5
$('#searchform').click(function() { $(this).val('') }) 
1

あなたは、このようなとしてフィールドからデフォルト値をクリアするために欠けている場合は、「検索用語を入力し、」私は次のコードを使用し

function clearText(thefield){ 
if (thefield.defaultValue==thefield.value) 
thefield.value = "" 
} 

をして、私の入力フィールドに、私は追加します。

onfocus="clearText(this)" 

だから、それは次のようになります。

<input type="text" name="username" value="enter your name here" onfocus="clearText(this)"> 
+1

あなたはインラインjsを使うべきではありません... – tbleckert

+0

私は物事のスクリプティング面にかなり新しく、どんなポインタでも、なぜ私はすべきではないかというように大きく受け取ります。この問題を回避するために過去に私が使用したソリューションを共有していただけです。 –

+1

あなたのアポートヴィンスに感謝します。 :)私はこの作業はうまくいくと確信していますが、コードは何らかの方法で圧縮できます。 – Tomkay

3

HTML5プレースホルダ属性を使用することをおすすめします。例:

<input type="text" placeholder="some default string if empty" /> 

これは最新のブラウザのほとんどで動作し、古いものは回避策jQueryプラグインがあります。ここにはplaceholder pluginへのリンクがあります。

は、それから、あなたは、単に呼び出す:

$('input[placeholder]').placeholder(); 
+0

プレースホルダのデモhttp://davidwalsh.name/dw-content/html5-placeholder.phpはFF 3.5で動作しません - 私はこのために余分なプラグインを使いたくありません。 – Tomkay

+0

@Tomkayここでは、プレースホルダーがおすすめの方法です。ブラウザがModernizrでサポートしているか、単純なjavascriptでサポートしているかを検出できます。私は今、IE <= 8だけがpolyfillを使用すると思います。 –

+0

ええ、私はHTML5が今仕事をするのに十分なほど人気が​​あると思います。新しいプロジェクトでもブラウザの検証を使用します。 – Tomkay

関連する問題