2012-03-22 12 views
16

Ho bisogno di impostare un segnaposto per un modulo di accesso orizzontale in Drupal 7. Questo testo deve scomparire quando si fa clic su. Diranno semplicemente "username" e "password". Ecco il codice per il modulo al momento. Grazie!Come impostare un segnaposto in drupal 7 su un modulo di login

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, 
); 

risposta

24

Ecco come farlo in HTML5, utilizzando l'attributo HTML segnaposto. Tuttavia, non funziona in alcuna versione di 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

Grazie! qualche idea di una correzione per IE su questo? – Zach

+3

Per i browser precedenti potrebbe essere utile http://drupal.org/project/jquery_placeholder. – Vacilando

+0

funziona ancora in Drupal 8 :) –

22

Un altro modo semplice è quello di aggiungere questa funzione per i vostri temi 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'); 
    } 
} 

Questo aggiungerà segnaposto HTML5 ai campi username password und in entrambe le forme di accesso.

Non dimenticare di modificare l'inizio del nome delle funzioni!

Buon divertimento!

+0

e per aggiungere un segnaposto per la ricerca, aggiungere il seguente all'interno della funzione: if ($ form_id == 'search_block_form') {$ form ['search_block_form'] ['# attributes'] [' placeholder '] = t (' Cerca ... '); } – timofey

+4

un miglioramento per questo codice per nascondere le etichette '$ form ['name'] ['# title_display'] =" invisible "; $ form ['pass'] ['# title_display'] = "invisibile"; ' – Capy

+1

Miglioramento ulteriore: invece di scrivere esplicitamente il testo segnaposto, riutilizzare l'etichetta:' $ form ['nome'] ['# attributi' ] ['placeholder'] = $ form ['name'] ['# title']; '' $ form ['pass'] ['# attributes'] ['placeholder'] = $ form ['pass'] [ '#title']; ' –

1

Considerare l'utilizzo di questo modulo https://www.drupal.org/project/form_placeholder implementa un segnaposto HTML 5 e per i browser meno recenti i browser meno recenti "che supportano l'attributo segnaposto HTML5 utilizza il plug-in jQuery Placeholder di Mathias Bynens".

Problemi correlati