J'ai une entrée HTML avec un lien dans la valeur.
<input type = 'text' value = 'http://www.link.com' id = 'link' />
J'utilise jQuery pour modifier la valeur d'un événement donné.
$('#link').val('new value');
Le code ci-dessus modifie la valeur de la zone de texte mais ne change pas la valeur dans le code (value = 'http://www.link.com' reste inchangé) J'ai besoin de la valeur = '' pour changer aussi.
Utilisez attr
à la place.$('#link').attr('value', 'new value');
La modification de la propriété value ne modifie pas la defaultValue
. Dans le code (récupéré avec .html()
ou innerHTML
), l'attribut value contiendra la defaultValue
, pas la propriété value.
pour développer un peu la réponse de Ricardo: https://stackoverflow.com/a/11873775/7672426
http://api.jquery.com/val/#val2
à propos de val ()
La définition de valeurs à l'aide de cette méthode (ou de la propriété de valeur native) ne provoque pas l'envoi de l'événement change. Pour cette raison, les gestionnaires d’événements pertinents ne seront pas exécutés. Si vous souhaitez les exécuter, vous devez appeler .trigger ("change") après avoir défini la valeur.
Ceci est juste un scénario possible qui m'est arrivé. Eh bien, si cela aide quelqu'un, alors c'est génial: j'ai écrit une application compliquée qui, quelque part dans le code, j'ai utilisé une fonction pour effacer toutes les valeurs des zones de texte avant de les afficher. Quelque temps plus tard, j'ai essayé de définir une valeur de zone de texte à l'aide de jquery val ('valeur'), mais je n'ai pas remarqué qu'après avoir appelé la méthode ClearAllInputs.
Mon problème similaire est dû au fait que des caractères spéciaux (par exemple des points) apparaissent dans le sélecteur.
Le correctif était d'échapper aux caractères spéciaux:
$("#dots\\.er\\.bad").val("mmmk");
<script src="//code.jquery.com/jquery.min.js"></script>
<script>
function changes() {
$('#link').val('new value');
}
</script>
<button onclick="changes()">a</button>
<input type='text' value='http://www.link.com' id='link'>
Dans mon cas, je devais mettre jQuery dans la fonction ready
comme ceci
$( document ).ready(function() {
$('#inputID').val('myValue');
}