2012-03-22 18 views
16

Necesito establecer un marcador de posición para un formulario de inicio de sesión horizontal en Drupal 7. Este texto debe desaparecer al hacer clic en. Simplemente dirán 'nombre de usuario' y 'contraseña'. Aquí está el código para el formulario a partir de ahora. ¡Gracias!Cómo establecer un marcador de posición en drupal 7 en un formulario de inicio de sesión

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

Respuesta

24

Así es como hacerlo en HTML5, utilizando el atributo HTML de marcador de posición. Sin embargo, no funciona en ninguna versión de 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

Gracias! alguna idea de una solución para IE en esto? – Zach

+3

Para navegadores anteriores, puede http://drupal.org/project/jquery_placeholder ser posiblemente útil. – Vacilando

+0

todavía funciona en Drupal 8 :) –

22

Otra forma sencilla es añadir esta función a sus temas 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'); 
    } 
} 

Esto añade marcadores de posición HTML5 a los campos de nombre de usuario contraseña und en ambas formas de la conexión.

¡No olvide cambiar el comienzo del nombre de las funciones!

¡Diviértete!

+0

y para agregar un marcador de posición para búsqueda, agregue lo siguiente dentro de la función: if ($ form_id == 'search_block_form') {$ form ['search_block_form'] ['# attributes'] [' marcador de posición '] = t (' Buscar ... '); } – timofey

+4

una mejora para este código para ocultar las etiquetas '$ form ['name'] ['# title_display'] =" invisible "; $ form ['pass'] ['# title_display'] = "invisible"; ' – Capy

+1

Mejora adicional: en lugar de escribir explícitamente el marcador de posición, reutiliza la etiqueta:' $ form ['name'] ['# attributes' ] ['placeholder'] = $ form ['name'] ['# title']; '' $ form ['pass'] ['# attributes'] ['placeholder'] = $ form ['pass'] [ '#title']; ' –

1

Considere el uso de este módulo https://www.drupal.org/project/form_placeholder implementa un marcador de posición HTML 5 y para navegadores antiguos los navegadores antiguos que no "admiten el atributo de marcador de posición HTML5 utilizan el complemento de marcador de posición jQuery de Mathias Bynens".

Cuestiones relacionadas