J'ai essayé de définir la valeur d'un champ caché dans un formulaire en utilisant jQuery, mais sans succès.
Voici un exemple de code qui explique le problème. Si je garde le type d'entrée sur "texte", cela fonctionne sans aucun problème. Mais changer le type d'entrée en "caché" ne fonctionne pas!
<html>
<head>
<script type="text/javascript" src="jquery.js">
</script>
<script type="text/javascript">
$(document).ready(function() {
$("button").click(function() {
$("input:text#texens").val("tinkumaster");
});
});
</script>
</head>
<body>
<p>
Name:
<input type="hidden" id="texens" name="user" value="texens" />
</p>
<button>
Change value for the text field
</button>
</body>
</html>
J'ai également essayé la solution de contournement suivante, en définissant le type d'entrée sur "texte", puis en utilisant un style "affichage: aucun" pour la zone de saisie. Mais cela échoue également! Il semble que jQuery a du mal à définir des champs d'entrée masqués ou invisibles.
Des idées? Existe-t-il une solution de contournement qui fonctionne réellement?
la source
val()
fonctionne très bien sur l'entrée masquée, en changeant la valeur de "non modifié" à "modifié". J'ai révisé l'exemple pour inclure le code que vous avez collé ci-dessus, avec une alerte pour confirmer le changement de valeur: jsbin.com/elovo/2/editSi vous rencontrez des difficultés pour définir la valeur d'un champ masqué parce que vous lui transmettez un identifiant, voici la solution:
Au lieu de
$("#hidden_field_id").val(id)
simplement faire$("input[id=hidden_field_id]").val(id)
. Je ne sais pas quelle est la différence, mais cela fonctionne.la source
Enfin, j'ai trouvé une solution et c'est simple:
Fonctionne comme un charme. Aucune idée pourquoi jQuery ne revient pas à cela.
la source
type="radio"
. Je suis trop paresseux pour signaler un problème, d'autant plus que j'ai résolu ce problème il y a 4 ans. Je suis également déchiré si cela doit être corrigé dans jQuery - peut-être est-il implémenté de cette façon pour protéger les enfants jQuery d'eux-mêmes? Qui sait ...J'ai eu le même problème. curieusement, google chrome et peut-être d'autres (pas sûr) n'ont pas aimé
(pas de changement)
(pas de changement)
mais cela fonctionne !!!!
CHANGEMENTS!!
CHANGEMENTS!!
doit être une "chaîne de caractères"
la source
.val(' 0')
, qui est correctement analysé parparseInt
en Javascript ainsi qu'enint()
Python, mon backend.travaillé pour moi, quand ni
ni
fait.
la source
.val n'a pas fonctionné pour moi, car je saisis l'attribut de valeur côté serveur et la valeur n'a pas toujours été mise à jour. alors j'ai utilisé:
J'espère que ça aide quelqu'un.
la source
En fait, c'est un problème permanent. Alors qu'Andy a raison à propos de la source téléchargée, .val (...) et .attr ('value', ...) ne semblent pas modifier réellement le code HTML. Je pense que c'est un problème javascript et non un problème jquery. Si vous aviez utilisé Firebug, vous auriez même eu la même question. Bien qu'il semble que si vous soumettez le formulaire avec les valeurs modifiées, il passera, le html ne change pas. J'ai rencontré ce problème en essayant de créer un aperçu avant impression du formulaire modifié (en faisant [form] .html ()) il copie tout correctement, y compris toutes les modifications sauf valeurs changent. Ainsi, mon aperçu avant impression modal est quelque peu inutile ... ma solution de contournement peut être de `` créer '' un formulaire caché contenant les valeurs qu'ils ont ajoutées, ou de générer l'aperçu indépendamment et de faire chaque modification que l'utilisateur fait également modifier l'aperçu. Les deux ne sont pas optimaux, mais à moins que quelqu'un ne comprenne pourquoi le comportement de définition des valeurs ne change pas le code HTML (dans le DOM, je suppose), il devra le faire.
la source
J'avais le même problème et j'ai découvert ce qui n'allait pas. J'ai eu le HTML défini comme
La lecture des valeurs du formulaire sur le serveur aboutissait toujours à un e-mail vide. Après m'être gratté la tête (et de nombreuses recherches), j'ai réalisé que l'erreur ne définissait pas correctement le formulaire / l'entrée. En modifiant l'entrée (comme indiqué ci-dessous), cela a fonctionné comme un charme
Ajout à ce fil au cas où d'autres auraient le même problème.
la source
Dans mon cas, j'utilisais une non-chaîne (entier) comme paramètre de val () qui ne fonctionne pas, l'astuce est aussi simple que
la source
L'utilisation
val()
n'a pas fonctionné pour moi. J'ai dû utiliser.attr()
partout. J'avais également différents types d'entrées et je devais être assez explicite dans le cas des cases à cocher et des menus de sélection.Mettre à jour le champ de texte
Mettre à jour l'image à côté de l'entrée du fichier
Mettre à jour le booléen
Mettre à jour la sélection (avec un nombre ou une chaîne)
la source
Un autre attrape ici a gaspillé un peu de mon temps, alors j'ai pensé que je passerais le bout. J'avais un champ caché que j'avais donné un identifiant. et des
[]
crochets dans le nom (en raison de l'utilisation avec struts2) et le sélecteur$("#model.thefield[0]")
ne trouverait pas mon champ caché. Le changement de nom de l'ID pour ne pas utiliser les points et les crochets a fait que le sélecteur a commencé à fonctionner. Donc, à la fin, je me suis retrouvé avec un identifiant de à lamodel_the_field_0
place et le sélecteur a bien fonctionné.la source
$("#model.thefield[0]")
est interprété comme: un élément avecid
égal àmodel
, un cssclass
dethefield
et certainsattribute
appelés0
... Si vous souhaitez utiliser ces caractères dans votreid
utilisation de l'approche suggérée par Chuck Callebs dans sa réponse . En HTML5, ilid
peut s'agir de n'importe quelle chaîne qui n'est pas vide et ne contient aucun caractère d'espace ( référence ).Utilisation de l'ID:
Utilisation de la classe:
la source
Si vous recherchez haml, c'est la réponse pour un champ caché pour définir une valeur sur un champ caché comme
Dans votre jquery, convertissez simplement la valeur en chaîne, puis ajoutez-la en utilisant la propriété attr dans jquery. espérons que cela fonctionne également dans d'autres langues.
la source
la source
Utilisez simplement la syntaxe ci-dessous get and set
AVOIR
ici une variable contiendra la valeur de hiddenfield (selectindex)
Du côté serveur
ENSEMBLE
la source
Quiconque a du mal avec cela, il existe un moyen très simple de le faire avec jQuery:
Cela définit la valeur du champ masqué lorsque le texte est tapé dans l'entrée visible à l'aide de l'événement onChange. Utile (comme dans mon cas) lorsque vous souhaitez transmettre une valeur de champ à un formulaire "Recherche avancée" et ne pas forcer l'utilisateur à retaper sa requête de recherche.
la source