2012-03-22 8 views
16

Drupal 7の水平ログインフォームのプレースホルダを設定する必要があります。このテキストをクリックすると消える必要があります。彼らは単に 'username'と 'password'と言うでしょう。ここに、現在のフォームのコードを示します。ありがとう!ログインフォームのプレースホルダを7に設定する方法

function horizontal_login_block($form) { 
$form['#action'] = url($_GET['q'], array('query' => drupal_get_destination())); 
$form['#id'] = 'horizontal-login-block'; 
$form['#validate'] = user_login_default_validators(); 
$form['#submit'][] = 'user_login_submit'; 
$form['#prefix'] = '<div id="loginbar">'; 
$form['#suffix'] = '</div>'; 
$form['name'] = array(
'#type' => 'textfield', 
'#prefix' => '<div class="usericon">', 
'#suffix' => '</div>', 
'#maxlength' => USERNAME_MAX_LENGTH, 
'#default_value' => t('Username'), 
'#id' => 'userbar', 
'#size' => 15, 
'#required' => TRUE, 
); 

答えて

24

プレースホルダHTML属性を使用してHTML5で行う方法です。ただし、Internet Explorerのバージョンでは動作しません。

function horizontal_login_block($form) { 
    $form['#action'] = url($_GET['q'], array('query' => drupal_get_destination())); 
    $form['#id'] = 'horizontal-login-block'; 
    $form['#validate'] = user_login_default_validators(); 
    $form['#submit'][] = 'user_login_submit'; 
    $form['#prefix'] = '<div id="loginbar">'; 
    $form['#suffix'] = '</div>'; 
    $form['name'] = array(
    '#type' => 'textfield', 
    '#prefix' => '<div class="usericon">', 
    '#suffix' => '</div>', 
    '#maxlength' => USERNAME_MAX_LENGTH, 
/* Don't set default values. HTML5 
    '#default_value' => t('Username'), */ 
    '#id' => 'userbar', 
    '#size' => 15, 
    '#required' => TRUE, 
    '#attributes' =>array('placeholder' => t('Username')) 
    ); 
+0

ありがとうございます!これについてのIEのための修正の任意のアイデア? – Zach

+3

古いブラウザでは、http://drupal.org/project/jquery_placeholderを使用すると便利なことがあります。 – Vacilando

+0

はまだDrupal 8 :) –

22

別の簡単な方法は、あなたのテーマにtemplate.phpをこの機能を追加することです:

function YOURTHEMENAME_form_alter(&$form, &$form_state, $form_id) 
{ 
    if (in_array($form_id, array('user_login', 'user_login_block'))) 
    { 
     $form['name']['#attributes']['placeholder'] = t('Username'); 
     $form['pass']['#attributes']['placeholder'] = t('Password'); 
    } 
} 

これは、両方のログインフォームでユーザー名ウントのパスワードフィールドにHTML5のプレースホルダを追加します。

機能名の先頭を忘れてはいけません!

楽しくお楽しみください!

+0

で動作し、検索用のプレースホルダを追加するには、関数内で次の行を追加します:if($ form_id == 'search_block_form'){$ form ['search_block_form'] ['#attributes'] ['プレースホルダー '] = t('検索... '); } – timofey

+4

このコードを改良して、 '$ form ['name'] ['#title_display'] =" invisible "というラベルを隠す。 – Capy

+1

さらなる改良点:プレースホルダテキストを明示的に書くのではなく、ラベルを再利用してください: '$ form ['name'] ['#attributes'] ['#title_display'] =" invisible " ] ['placeholder'] = $ form ['name'] ['#' title ']; $ form [' pass '] ['# '#title']; ' –

1

このモジュールを使用することを検討してください。https://www.drupal.org/project/form_placeholderはHTML 5プレースホルダを実装しています。古いブラウザの場合、「HTML5プレースホルダ属性のサポートはMathias BynensのjQueryプレースホルダプラグインを使用していません」

関連する問題