web-dev-qa-db-fra.com

Impossible de définir la valeur du champ d'entrée masqué à 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 défini du tout. Si j'essaie de définir le type d'entrée sur "bouton" ou autre chose, cela fonctionne. Je ne peux tout simplement pas le faire avec un champ de saisie hidden. Qu'est-ce que je fais mal?

34
framomo86

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

par exemple.

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

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

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

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

et il a affiché la valeur modifiée.

25
framomo86

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 de champ caché est 'Data'

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

Fonctionne parfaitement pour moi

23
Jacob Tomlinson

J'ai aussi eu du mal avec ça. Si vous définissez une valeur initiale, dites «0», puis observez le DOM en utilisant quelque chose comme Firebug, vous remarquerez que le DOM est ensuite mis à jour. Pour une raison quelconque, si la valeur initiale est définie sur null ou sur 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)

3
Stevie G

J'ai eu ce problème lorsque POST- ma formulaire et mon script PHP n'a pas pu obtenir POST- ed. J'ai utilisé ceci:

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

J'espère que ça aide.

2
remo

Je sais qu'il est trop tard, mais cela pourrait quand même aider quelqu'un ... Si aucune des solutions ci-dessus ne fonctionne, procédez comme suit ...

$(document).ready(function() {
$('#foo').attr("value","foo") });
1
Giridhar Karnik

J'ai eu le même problème avec un champ d'entrée caché . Id i définir la valeur initiale sur 0, cela fonctionne très bien, mais parfois je ne voulais pas avoir une valeur initiale de 0 . Donc, j'ai testé avec valeur = "", un espace et ça marche aussi pour moi . Si vous remplissez la valeur dynamique à partir de PHP, vous pouvez utiliser value="<?= $val+0; ?>" si 0 vous convient, ou value="<?= $val; ?> " à un espace.

1
mtom

J'aurais besoin de voir le fichier entier, mais je suppose que vous n'incluez pas le fichier source jQuery.js ou que vous avez plusieurs éléments avec un ID de foo.

1
Andrew G. Johnson

J'ai confirmé que définir la valeur d'un champ masqué ne fonctionne pas avec un sélecteur jQuery comme celui-ci ...

$('[name="my_field"]').val('Something');

Ne mettra pas à jour un champ caché ... un peu choquant.

<input type="hidden" name="my_field" id="my_field">

A été contraint d'utiliser un champ caché CSS à la place.

<input type="text" name="my_field" id="my_field" style="display:none">

Apparemment, l'utilisation de id d'un champ masqué pose également problème ... La valeur du champ masqué dans un formulaire utilisant ".val ()" de jQuery ne fonctionne pas

Remarque: veillez à obtenir la valeur dans la console et non en inspectant.

$('[name="my_field"]').val();
0
doublejosh

Plutôt que d’initialiser votre attribut de valeur avec une chaîne, initialisez votre entrée comme ceci.

<input type="hidden" name="foo" id="foo" value="${foo}">

"foo" contiendra également la nouvelle valeur que vous avez définie.

0
Noris

Aucune des solutions ci-dessus n'a fonctionné pour moi.

Je devais faire ce qui suit pour que cela fonctionne:

$('#foo').val(data).blur();
0
Venkatesh Nannan