2017-01-27 9 views
0

tablelessformsアドオンを使用してconcrete5でフォームのプレースホルダを作成しようとしています。str_replace経由でプレースホルダを追加しました

これまでのところ、以下のコードを使用して入力用のプレースホルダを生成するようにフォームを設定しました。しかし、表示中のテキストエリアでは、関数str_replaceはプレースホルダーを置き換えて追加することはありません。ここで

は以下のコードとサイトへのリンクです:http://79.170.44.138/holidayletmidwales.co.uk/newsite/

<div class="fields"> 

    <?php foreach ($questions as $question): ?> 
     <div class="field field-<?php echo $question['type']; ?>"> 
      <?php if ($question['textarea']) { 
         $question['textarea'] = str_replace('rows="3"', 'rows="3" placeholder="'.$question['question'].'"', $question['textarea']); 
        echo $question['textarea'];   
        } else { 
         $question['input'] = str_replace('value=""', 'value="" placeholder="'.$question['question'].'"', $question['input']); 
         echo $question['input'];   
       } ?>  
      </div> 
    <?php endforeach; ?> 

</div><!-- .fields --> 

任意の助けいただければ幸いです。

+1

PHPコード – RiggsFolly

答えて

1

マークアップがrows="5"の場合、rows="3"を検索しているため、検索と置換が機能しません。変更可能な属性を検索するよりも、より良いオプションは、タグの先頭を見つけることです。 str_replace ('<input', '<input placeholder="foo"', $html)、または可能であれば、タグを生成するクラスを拡張して、必要に応じてプレースホルダを処理します。

しかし、テキスト領域は実際にプレースホルダをサポートしていないため、少しは関係ありません。 :)

+0

の連続したブロックのすべての行で ' 'を使用しないと、コードを読みやすくなります。私は自分のテキストエリアを入力に変えて、それに行を付けたり、別のアイデアで遊んだりしています。ありがとうございました – Imran

+0

あなたがやっていることに応じて、複数の入力を持つ機能をシミュレートするより簡単かもしれませんが、JavaScriptを使ってプレースホルダテキストを含む要素をテキストエリアに配置します(pointer-events:noneに設定)。それが内容を持っているかどうかに応じて、テキストエリアの変更イベントでそれを隠す/表示します。 –

+0

これを更新するだけで、HTML5が実際にテキストエリアにプレースホルダ属性を追加したことがわかりました。誤った情報を申し訳ありません。 –

関連する問題