[Resolu]hook champ de formulaire avec javascript

Catégories:

Bonjour,

J’ai créé un petit module pour afficher le texte «identifiant» dans le champ de formulaire d’identification.

J’aimerais que lorsque l’utilisateur clique dedans le texte s’efface automatiquement.

Je pensais le faire en javascript avec un truc du genre

onfocus="javascript:this.form.utilisateurident.value='';"

Comment puis-je l’intégrer ou existe-t-il une propriété pour le textfield en drupal ?

$form['name']['#default_value']= t('Login');

Merci de votre aide.

#

Essaye en jQuery, j’ai créé une fonction pour ça :

function desc_field(id, text){
    $(id).attr('value', text);
    $(id).click(function() {
     if($(id).val() == text)
            $(id).attr('value', '');
       });
    $(id).blur(function() {
        if($(id).val() == '')
            $(id).attr('value', text);
       });
}

et après dans ton template : desc_field('{Sélecteur jQuery}', 'Identifiant');

tu auras identifiant affiché dans ton INPUT, quand tu cliques dedans le texte disparaitra et il réapparaitra si tu cliques à côté et que tu n’a rien tapé.

Jérôme MEGEL

#

merci pour ta réponse

je ne connais pas bien le jquery, dans quel fichier et où mets-tu la fonction ?
Dois-je conserver mon module du coup ?

#

faire du jquery et rester avec du js intrusif c’est dommage quand même

tu peux ajouter cette ligne par exemple

$(«#idDeTonChamp»).bind(‘click’, function(){
if($(this).attr(‘value’) == ‘TextDeBaseDeTonCham’){
$(this).attr(‘value’,”) ;
}
}) ;

Pour l’emplacement bien tu peux créer un fichier .js dans ton module  : nomModule.js
et le charger via la fonction drupal_add_js

malgré le fait que le code soit bon (j’ai testé) il se peut que ca ne fonctionne pas…

Richard lascols
www.ideia.fr

#

Si j’ai bien compris, je crée un fichier .js contenant ton code et je l’appelle dans mon module via la fonction drupal_add_js ?

#

oui.

pour être sûr met un alert(‘flag’) ; dans ton fichier .js avant le code. Pour être sûr que tu passes bien dans le fichier

Richard lascols
www.ideia.fr

#

j’ai créé mon fichier form_accueil.js que j’ai mis dans le répertoire de mon module

Puis dans mon module j’ai mis ceci mais apparemment le fichier .js n’est pas appelé car je n’ai pas l’alerte.

Quelle est l’erreur dans ma syntaxe, je l’ai trouvé sur l’API drupal ?

<?php
drupal_add_js
(drupal_get_path('module', 'formulaire_accueil') . 'form_accueil.js');
?>

formulaire_accueil est le nom de mon module.

#

<?php
drupal_add_js
(drupal_get_path('module', 'formulaire_accueil') . '/form_accueil.js');
?>

le / devant le nom de ton fichier ;)

Richard lascols
www.ideia.fr

#

j’ai essayé avec et sans mais il ne se passe rien…

Comment appeler un fichier javascript à partir d’un module ?

mon module

<?php
function formulaire_accueil_form_alter(&$form, &$form_state, $form_id) {
    if(
$form_id=='user_login_block' || $form_id=='user_login'){
       
//ajout texte votre espace pro
    
$form['espace']=array(
          
'#value' => '<div id="espace-pro">'.t('Votre espace').'</div>',
          
'#weight' => -5,
          );
    
      
//$form['name']['#default_value']= t('Login');
      
drupal_add_js(drupal_get_path('module', 'formulaire_accueil') . '/form_accueil.js');
    
      
      
$text="Envie d'adh&eacute;rer?";
       
$path = 'node/245';
     
      
$form['adherer']=array(
         
'#value' => '<div id="adherer">'.l($text, $path, array('html' => TRUE)).'</div>',
         
'#weight' => 10,
          );
    
   }
}

?>

//////////////////edit

J’ai trouvé la solution grâce à http://drupal.org/node/500832 en utilisant

<?php
$form
['NAME-OF-FIELD']['#attributes']['onblur'] = ...
?>

Syndiquer le contenu