35 votes

Impossible de définir la valeur d'un champ de saisie caché à l'aide de jQuery

J'ai un simple champ de saisie dans une balise de formulaire :

<body>
  <form action="#">
      <label>Input</label>
      <input type="hidden" id="foo" name="foo" />

  </form>
</body>

J'ai essayé de définir cette valeur à partir d'un fichier js :

$(document).ready(function(){
    $('#foo').val('foo')
})

mais dans la source html, l'attribut n'est pas du tout défini. Si j'essaie de définir le type d'entrée sur "bouton" ou autre chose, cela fonctionne. Mais je ne peux pas le faire avec un hidden champ de saisie. Qu'est-ce que je fais de mal ?

0 votes

Serait-il utile de donner une valeur initiale au champ de saisie ? (même si c'est une chaîne vide)

5 votes

La réponse acceptée ne répond pas à la question réelle, même si elle est utile pour trouver une solution. Il est probablement préférable d'accepter une réponse correcte, étant donné que cette question est vue plus de 10 000 fois par an.

26voto

Fermin Points 12964

Pouvez-vous récupérer la valeur du champ caché si vous définissez la balise val ?

par exemple

<input type="hidden" id="foo" name="foo" value="bar" />

$(document).ready(function(){
  alert($('#foo').val());
})

17 votes

Juste pour clarifier : l'auteur essayait de voir la valeur modifiée en utilisant "See Source Code". Notez que les modifications apportées au DOM de manière dynamique ne sont pas visibles via "See Source Code".

0 votes

Il y a ce truc bizarre quand vous devez cloner une entrée cachée. jsfiddle.net/YvBfP

25voto

framomo86 Points 705

J'ai trouvé la solution. La valeur a été définie par jQuery mais lorsque j'ai consulté la source, la nouvelle valeur n'était pas affichée. J'ai essayé ceci (merci à Fermin) :

$('#foo').val('poo')
alert($('#foo').val())

et il a affiché la valeur modifiée.

1 votes

Je recommande d'utiliser un outil de développement comme firebug pour firefox pour voir le code source dynamique plus facilement.

0 votes

Le plugin Web Developer de Firefox dispose également d'un outil "View Generated Source" qui affiche la source avec toutes les modifications apportées au javascript.

22voto

Jacob Tomlinson Points 960

La meilleure réponse que j'ai trouvée était sous la forme http://forum.jquery.com/topic/passing-value-to-hidden-form-field .

Au lieu de $('#Data').val(data); Où l'ID du champ caché est "Data".

Utilisez $('input[name=Data]').val(data);

Fonctionne parfaitement pour moi

3 votes

Cela fonctionne parce que le "Data" ici est le "nom" de l'entrée, pas l'id. Quoi qu'il en soit, un vote positif de ma part parce que j'ai aussi oublié cela.

4voto

Stevie G Points 31

J'ai également été confronté à ce problème. Si vous définissez une valeur initiale, disons '0', et que vous observez le DOM en utilisant quelque chose comme Firebug, vous remarquerez que le DOM se met à jour. Pour une raison quelconque, si la valeur initiale est fixée à null ou à une chaîne vide, le DOM ne se met pas à jour, mais la valeur est en fait toujours stockée.

Vous pouvez tester cela en alertant le val après l'avoir défini (comme suggéré dans les messages précédents).

2voto

remo Points 326

J'ai eu ce problème quand POST -de mon formulaire et mon script PHP ne pouvait pas obtenir POST -ed. J'ai utilisé ceci :

$('#elemId').attr("name", theValue);

J'espère que cela vous aidera.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X