[Resolu]hook champ de formulaire avec javascript

Information importante

En raison d'un grand nombre d'inscriptions de spammers sur notre site, polluant sans relache notre forum, nous suspendons la création de compte via le formulaire de "sign up".

Il est néanmoins toujours possible de devenir adhérent•e en faisant la demande sur cette page, rubrique "Inscription" : https://www.drupal.fr/contact


De plus, le forum est désormais "interdit en écriture". Il n'est plus autorisé d'y écrire un sujet/billet/commentaire.

Pour contacter la communauté, merci de rejoindre le slack "drupalfrance".

Si vous voulez contacter le bureau de l'association, utilisez le formulaire disponible ici, ou envoyez-nous un DM sur twitter.

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.

Forum : 
Version de Drupal : 

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

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...

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.

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'] = ...
?>