2012-10-20 6 views
5

"value"プロパティを持つテキスト入力フィールドがある場合は、プレースホルダ属性(プレースホルダタグ、 "defaultvalue"および同様のアプローチではありません)空の?"value"フィールドが空の場合にプレースホルダ属性を追加する方法

私はここで多くの同様の質問を見ましたが、それらのほとんどはdefaultvalueを使用します。プレースホルダータグが必要ですが、HTML出力にはまったく影響しません。

これで指定したHTML出力例:

<input type="text" value="" name="textbox" id="edit-textbox"> 
+0

http://jsfiddle.net/gT7dv/ –

+0

@RPMそれは簡単すぎるでしょうか? :) HTML出力には影響しないと書いています。これは私が持っているコードなので、jQueryでプレースホルダ属性を追加する必要があります – take2

+0

HTML出力には何の影響もありません(プレースホルダを追加することを除いて、それはあなたではありません)。 しかし、それはHTML 5用です! – Robyflc

答えて

11

私は、次の方法のいずれかをお勧めしたいためです。

JS Fiddle demo using el.placeholder = $('label[for=' + el.id + ']').text()

それとも、さまざまなプレースホルダを保存するために、配列を使用することができます。

var placeholders = ['Email address', 'favourite color']; 

$('input:text').each(
    function(i,el) { 
     if (!el.value || el.value == '') { 
      el.placeholder = placeholders[i]; 
     } 
    });​ 

JS Fiddle demoを。

var placeholders = { 
    'one' : 'Email address', 
    'two' : 'Favourite color' 
}; 

$('input:text').each(
    function(i,el) { 
     if (!el.value || el.value == '') { 
      el.placeholder = placeholders[el.id]; 
     } 
    });​ 

JS Fiddle demo:特定の要素の特定のプレースホルダを指定する

追加したエントリは、プレースホルダに存在しないことをイベントでキャッチ/フォールバック

は、特定の inputのオブジェクト:

var placeholders = { 
    'oe' : 'Email address', // <-- deliberate typo over there 
    'two' : 'Favourite color' 
}; 

$('input:text').each(
    function(i,el) { 
     if (!el.value || el.value == '') { 
      el.placeholder = placeholders[el.id] || ''; 
     } 
    });​ 

JS Fiddle demo

+0

私は両方の提案を試してみましたが、うまくいきませんでした。ここでフィドルを確認できます:http://jsfiddle.net/U2YZx – take2

+0

そのコードで作業するには実際のラベル要素が必要です。あなたは1つも持っていないので、動作しません。 –

+0

華麗な、ありがとう!しかし、このコードについての1つの質問 - どのテキストボックスがどのように影響を受けるべきかをどのように参照するのですか? e。正確な入力ボックス(この場合は#textbox)をどのようにターゲットできますか? – take2

4

あなたはHTML5を使っている(とあなたがすべき)ネイティブplaceholder属性がある場合。

<input type="text" value="" placeholder="My placeholder!" name="textbox" id="edit-textbox"> 

編集

あなたがHTMLを編集して、JSを使用することはできません言ったように、これは役立つかもしれません。

$( '#edit-textbox')。attr( 'プレースホルダ'、 '私のプレースホルダ!');

$('input:text').each(
    function(i,el) { 
     if (!el.value || el.value == '') { 
      el.placeholder = 'placeholdertext'; 
      /* or: 
      el.placeholder = $('label[for=' + el.id + ']').text(); 
      */ 
     } 
    }); 

JS Fiddle demo using el.placeholder = 'placeholdertext'

はもう一度、これはHTML 5

+0

これも、ありがとう! Davidは最初の人だったので、私は彼の答えを受け入れました。 – take2

+0

私たちの答えはまったく違っていて、異なることにつながることに注意してください。 質問: "プレースホルダ属性を追加する方法"と値属性を設定する方法(彼の答えのように)は絶対に同じではありません。 – Robyflc

+0

私はfirebugでコードをチェックしています。プレースホルダーのテキストはプレースホルダーの属性として表示されるので、私の質問に対する答えになります。 – take2

0
(function($) { 

    $('#edit-textbox').attr('placeholder','Your placeholder text'); 

})(jQuery); 
関連する問題