如何在登录表单上的drupal 7中设置占位符

Posted

技术标签:

【中文标题】如何在登录表单上的drupal 7中设置占位符【英文标题】:How to set a placeholder in drupal 7 on a login form 【发布时间】:2012-04-07 12:19:21 【问题描述】:

我需要在 Drupal 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,
);

【问题讨论】:

【参考方案1】:

考虑使用此模块 https://www.drupal.org/project/form_placeholder 实现 html 5 占位符,对于旧版浏览器,旧版浏览器不“支持 HTML5 占位符属性使用 Mathias Bynens 的 jQuery 占位符插件”。

【讨论】:

【参考方案2】:

这是在 HTML5 中使用占位符 HTML 属性的方法。但是,它不适用于任何 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'))
    );

【讨论】:

谢谢!对此有 IE 修复的想法吗? 对于旧版浏览器,drupal.org/project/jquery_placeholder 可能有用。【参考方案3】:

另一种简单的方法是将此函数添加到您的主题中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 占位符添加到两个登录表单中的用户名和密码字段。

不要忘记更改函数名称的开头!

玩得开心!

【讨论】:

要为搜索添加占位符,请在函数中添加以下内容: if ($form_id == 'search_block_form') $form['search_block_form']['#attributes']['placeholder '] = t('搜索...'); 改进此代码以隐藏标签$form['name']['#title_display'] = "invisible"; $form['pass']['#title_display'] = "invisible"; 进一步改进:不再显式编写占位符文本,而是重新使用标签:$form['name']['#attributes']['placeholder'] = $form['name']['#title'];$form['pass']['#attributes']['placeholder'] = $form['pass']['#title'];

以上是关于如何在登录表单上的drupal 7中设置占位符的主要内容,如果未能解决你的问题,请参考以下文章

联系表 7 中的占位符 - Wordpress

在 TextField 中设置占位符的样式

如何在格式字符串中设置占位符的颜色

如何在资源管理器的文本区域中设置占位符的样式?

在ios中设置TextInput占位符垂直居中 - React Native

在 IE9 中设置占位符 att