2012-03-04 10 views
1

my jqueryヒントは、テキストボックスではなくテキストエリアでのみ機能します。私はそれを両方のために働かせる方法。jqueryヒントがテキストエリアで動作しない

<input type="text" name="name" title="Full Name" > 

ではなく、上:

$(document).ready(function() { 
//Shows the title in the text box, and removes it when modifying it 
$('input[title]').each(function(i) { 
if(!$(this).val()) { 
    $(this).val($(this).attr('title')).addClass('hint'); 
} 

のみで動作します

<textarea title="Enter Message Here"name="message" rows=8 cols=30 </textarea> 
+0

$( 'input [title]、textarea [title]')関数を2回実行すると、$( 'input [title]')と1 for $( 'textarea [title]') –

+0

これは、テキスト領域が 'textarea'要素であり、' input'要素ではないからです。下記の@nnnnnnnによる回答を参照してください。 – Sparky

答えて

3

あなたの現在のセレクタ、$('input[title]')は、title属性を設定して入力を選択するように言います。テキストエリアについては何も言わない。より良い

$('input[title],textarea[title]') 

あるいは、間違いなく:あなたはこれを実行する必要が

$(':input[title]') // note the colon 

最初は、title属性を持つすべての入力要素とtitle属性を持つすべてのTEXTAREA要素を選択するように言います。 2番目はjQueryの:input selectorを使用して、すべての入力、テキストエリア、選択およびボタン要素(つまりすべてのフォーム要素)を自動的に取得しますが、この場合はタイトル属性を持つものに限定されます。

の作業のデモ:http://jsfiddle.net/qMLRK/

注:<textarea> </textarea>が空でないあるので、あなたがフィールドにスペースを可能にする必要があります

if ($.trim($(this).val()) === "") 

// NOT 

if(!$(this).val()) 
+0

どちらも動作していません:S – Lukus

+0

両方のセレクタがうまく動作していると思いますが、コード内の他の問題のために望ましい効果が得られません。あなたの質問でさえ完全なdocument.ready関数を表示せず、textareaのhtmlにはタイプミス(開始タグに '>'がありません)があります。テキストエリアに空白がある場合、現在のコードでは空であるとはみなされませんので、更新された答えとサンプルのフィドルに示すように、 '$ .trim()'を使用して更新してみてください。 – nnnnnn

0

jQueryのは、選択として、すべてを行います。

テキストエリアは入力タイプではないので、JQueryの選択項目を追加するだけです。

$('input[title],textarea[title]').each(function(i) { 

この問題は解決するはずです。あなたは同じクラスを両方与えることもできます:)そして、クラスで選択するだけで、あなたの選択をちょうどに減らします(クラスとして名前のテキストボックスを使用したと仮定します)

$( '。テキストボックス')each

関連する問題