J'ai une fonction Javascript qui devrait mettre à jour un champ de saisie caché dans mon formulaire avec un nombre qui augmente à chaque appel de la fonction.
Cela a fonctionné à l'origine avec getElementById () mais parce que j'ai dû repenser mon formulaire, je ne peux pas utiliser la fonction php pour attribuer un ID individuel à l'élément, donc tout ce que j'ai est un nom unique pour cet élément.
J'ai donc décidé d'utiliser getElementsByName () de Javascript pour modifier l'élément.
Voici le HTML de cet élément
<input type="hidden" value="" name="staff_counter">
Voici mon code Javascript:
window.onload=function()
{
//function is activated by a form button
var staffbox = document.getElementsByName('staff_counter');
staffbox.value = s;
s++;
}
Je ne reçois aucune erreur sur Firebug lorsque la fonction est appelée et que le champ de saisie ne reçoit pas de valeur.
Cela fonctionnait avec getElementById () mais pourquoi tout d'un coup ça ne fonctionne pas avec getElementsByName ()?
Voici le code que j'utilise de Codeigniter pour faire l'élément
// staff_counter is name and the set_value function sets the value from what is
//posted so if the validation fails and the page is reloaded the form element does
// not lose its value
echo form_hidden('staff_counter', set_value('staff_counter'));
Merci
document.getElementsByName()
renvoie un NodeList , vous devez donc y accéder par un index: document.getElementsByName('staff_counter')[0]
(selon le nombre de ceux-ci).
Vous avez également accès à une propriété length
pour vérifier le nombre d'éléments mis en correspondance.
Juste eu un problème similaire, je l'ai résolu avec une simple boucle sur le tableau. Le code ci-dessous passera et désactivera tous les boutons avec le nom de 'btnSubmit'.
for (var i=0;i<document.getElementsByName('btnSubmit').length;i++){
document.getElementsByName('btnSubmit')[i].disabled=true;
}