8
votes

JQuery Val () Modification de la méthode ne semble pas changer le DOM

faire $ ("# siéid"). Val ("nouveauvalue") ne change pas le DOM - Je peux récupérer cette valeur avec $ ("# siéide"). Val () , mais l'élément de la DOM n'a toujours pas d'attribut de valeur.

Comment définir la valeur d'un composant d'entrée et modifier également le DOM?

J'utilise jQuery 1.5.1 .


4 commentaires

Si vous utilisez le Firebug, il y a un bogue dans la mise à jour du DOM, vous devez cliquer sur l'objet de la fenêtre pour l'actualiser :)


Tapez une réponse Val afin que je puisse monter :)


@Val, où je devrais cliquer sur l'objet de la fenêtre? Dans DOM TAB?


Vérifiez ma réponse et cela devrait faire un peu plus de sens.


4 Réponses :


7
votes

.val () fait change le DOM. Par exemple, ceci: xxx

alertes "NewValue".

voir Démo .

Si vous souhaitez modifier la valeur par défaut à utiliser dans le formulaire réinitialise, essayez ceci: xxx

voir démo .


12 commentaires

@Alex: Veuillez poster un EXEMPLE JSFIDDLE qui démontre ce que vous dites. Peut-être que vous ne regardez pas à jour DOM - voir le commentaire de Val.


@RSP, idem dans l'inspecteur Web ... Vous avez écrit l'exemple approprié, mais il existe toujours des problèmes ... Élément d'inspection dans n'importe quel navigateur, indique qu'il n'y a pas d'attribute "valeur" ...


@Alex: Je viens de vérifier et Safari et Firefox montrent la valeur correcte. En outre, si ce n'était pas dans le DOM, documenter.getElementtyid ("quelqueid"). La valeur ne retournerait pas cette valeur. Êtes-vous sûr que vous regardez au bon endroit?


@RSP: Oui, c'est pourquoi je suis confus ... Ok, il y a une capture d'écran img851 .imageshack.us / img851 / 8295 / Capturehot20110308AT338.png , regardez l'élément inspecté et découvrez qu'il n'y a pas d'attribut «valeur». Chrome, Mac OS X


@Alex: Vous envisagez la source HTML, pas la DOM. Lorsque vous cliquez avec le bouton droit de la souris sur l'élément de Firefox et sélectionnez «Inspecter l'élément», cliquez sur l'onglet DOM de la fenêtre inférieure droite et recherchez la propriété «Valeur». C'est ici?


@RSP, oui valeur Atribute là-bas ... maintenant je l'ai eu. Mais il existe toujours des problèmes lorsque je génère un DOM approprié en mémoire. Par exemple, je dois charger certaines dom et définir une certaine valeur de l'entrée, via .val (). La valeur définira, mais dans la source, il n'y a pas d'attribut de valeur. Et plus tard, lorsque je réinitialise un formulaire, via .Reset (), tout le champ de saisie est vide, mais ne devrait pas, comme la réinitialisation fonctionne uniquement pour les champs édités ... J'espère que j'ai expliqué pourquoi j'ai besoin de changer de véritable HTML. D'autre part, je peux ajouter et modifier tout attribut via .attr (), mais cela ne fonctionne pas pour "valeur" ...


@ALEX Comme je l'ai expliqué sur ma réponse, Fire-Bug manipule uniquement les codes source HTML afin qu'il puisse vous rendre la vie plus facile à déboguer et suivre les modifications des pages dynamiques. avec cela à l'esprit, vous aurez toujours des bugs qui ne fonctionnent pas toujours, ni n'ont pas encore été mis en œuvre


@Val, il ne s'agit pas de Firebug. Il est question de savoir comment définir la valeur d'attributs dans JQuery en mémoire, dans ce cas, il faut ressembler à: mais il ne définit que la valeur sur DOM et ne représente pas dans HTML. . Pour cette raison, la réinitialisation du formulaire ne fonctionne pas comme devrait être


tu me conduisas fou lol :) L'onglet HTML sur Firebug ne met pas à jour valeur attr mais il fait dans DOM,


@Val, oui exactement! Et c'est pourquoi la réinitialisation de la forme ne fonctionne pas comme devrait être. Ok, je dois écrire un exemple avec une forme ...


@Alex: Ce que vous voulez probablement changer n'est pas valeur mais defaultValue . Voir exemple dans la mise à jour de ma réponse.


Voir ce violon: Jsfiddle.net/ykvxj/48 La propriété OUTERHTML ne montre pas de changement de < Code> Valeur . Puis-je conclure que DOM n'est pas mis à jour, mais simplement la valeur de la propriété est mise à jour.



2
votes

réponse Si vous utilisez le Firebug, il y a un bogue dans la mise à jour du DOM, vous devez cliquer sur le Objet de la fenêtre pour l'actualiser :)

explication @alex je lisais des commentaires ci-dessous. Sur la réponse @RSP et vous semblez confondre le DOM avec l'arborescence HTML A DOM, est un arbre comme une liste de valeurs utilisée pour garder une trace des valeurs. et oui cliquez sur l'onglet DOM ou cliquez avec le bouton droit de la souris sur l'élément en question, puis inspectez-le dans DOM, les valeurs, les modifications ne figurent pas sur Firebug, en raison de raisons de sécurité qui empêchent autre chose qu'un navigateur de modifier ses valeurs ou Peut-être parce que le punais de feu, l'a eu tort et y travaillent probablement sur :)


0 commentaires

1
votes

lire de "RSP" Réponse et discussion:

Vous souhaitez modifier la source HTML, pas le DOM. P>

Par conséquent, utilisez: P>

$('#YOUR_ID option[value="YOUR_VALUE"]').attr('selected', 'selected');


0 commentaires

3
votes

Ceci xxx pré>

changera la valeur de l'élément d'entrée. p>

Ceci P>

$("#someId").val("newValue")
write($("#someId").parent())


0 commentaires