8
votes

Comment obtenir le formulaire HTML () via JQuery, y compris les attributs de valeur mises à jour?

est-il possible d'obtenir le code HTML d'un formulaire avec des attributs de valeur mis à jour via la fonction .html ()?

Le (simplifié) HTML: P>

$(document).ready(function() 
{
    $('a').on('click', function() {
        alert($('form').html());
    });
});


2 commentaires

Je ne le crois pas, car les valeurs ne sont jamais définies avec JS, elles viennent de rentrer comme ce qu'elles sont codées en dur. Vous pouvez toujours utiliser . Sérialiser ()


Parce que vous alertez le HTML actuel ... Ce que vous tapez ne sont pas ajoutés au bâtiment HTML de la page. probablement devra faire une boucle à travers chaque élément, obtenir le code HTML et la valeur et la combiner


3 Réponses :


9
votes

Si vous devez vraiment avoir le HTML, vous devez réellement mettre à jour l'attribut "valeur" manuellement: http://jsfiddle.net/brlgc/4/ xxx


5 commentaires

Je suppose que c'est la seule solution alors ... Cependant, je suppose que c'est un peu plus délicieux avec des boutons radio et des cases à cocher ...


Solution mise à jour pour les radios et les cases à cocher. Même principe, sauf en utilisant l'attribut coché plutôt que la valeur. Bien sûr, c'est désordonné, mais appeler .html () est normalement.


Comme @Tymejv mentionné ci-dessus, Serialize () fonctionnera également, ce qui en fait un peu plus propre.


.Sérialize () fournit uniquement des paires de clés / valeur comme une chaîne. Il veut le HTML littéral de la page Web.


J'ai ajouté votre script à un auditeur de changement pour tous mes champs de formulaire



5
votes

La réponse de Rggraham ne fonctionnait pas pour moi, donc je l'ai modifiée à: XXX


0 commentaires

1
votes

Les œuvres de Lachlan "presque" parfaite. Le problème est que le formulaire est sauvegardé et ensuite restauré, puis sauvegardé la radio et les cases à cocher ne décoquent pas et ne conservent plutôt que la composition. Fix simple ci-dessous.

$("input, select, textarea").each(function () {
    var $this = $(this);

    if ($this.is("[type='radio']") || $this.is("[type='checkbox']")) {
        if ($this.prop("checked")) {
            $this.attr("checked", "checked");
        } else {
            $this.removeAttr("checked");
        }
    } else {
        if ($this.is("select")) {
            $this.find(":selected").attr("selected", "selected");
        } else {
            $this.attr("value", $this.val());
        }
    }
});


0 commentaires