509 votes

Obtenir des données de formulaire avec Javascript / Jquery

Existe-t-il un moyen simple et unique d'obtenir les données d'un formulaire comme s'il s'agissait d'un formulaire HTML classique?

Par exemple, dans:

 <form>
 <input type="radio" name="foo" value="1" checked="checked" />
 <input type="radio" name="foo" value="0" />
 <input name="bar" value="xxx" />
 <select name="this">
  <option value="hi" selected="selected">Hi</option>
  <option value="ho">Ho</option>
</form>
 

En dehors:

 {
 "foo": "1",
 "bar": "xxx",
 "this": "hi"
}
 

Quelque chose comme ceci est trop simple, car il n'inclut pas (correctement) les zones de texte, les sélections, les boutons radio et les cases à cocher:

 $("#form input").each(function() {
 data[theFieldName] = theFieldValue;
});
 

605voto

Paul Points 2194

Utilisez $ ('form'). SerializeArray () , qui retourne le tableau :

 [
 {"name":"foo","value":"1"},
 {"name":"bar","value":"xxx"},
 {"name":"this","value":"hi"}
]
 

L'autre option est $ ('form'). Serialize () , qui retourne une chaîne:

 "foo=1&bar=xxx&this=hi"
 

Jetez un oeil à cette démo jsfiddle

507voto

chelmertz Points 8774
 $('form').serialize() //this produces: "foo=1&bar=xxx&this=hi"
 

démo

237voto

neuront Points 1384

Basé sur jQuery.serializeArray , renvoie les paires clé-valeur.

 var data = $('#form').serializeArray().reduce(function(obj, item) {
    obj[item.name] = item.value;
    return obj;
}, {});
 

27voto

Nils Points 101

utilisez .serializeArray () pour obtenir les données au format tableau, puis convertissez-les en objet:

 function getFormObj(formId) {
    var formObj = {};
    var inputs = $('#'+formId).serializeArray();
    $.each(inputs, function (i, input) {
        formObj[input.name] = input.value;
    });
    return formObj;
}
 

13voto

pixeline Points 8713
 $("#form input, #form select, #form textarea").each(function() {
 data[theFieldName] = theFieldValue;
});
 

à part ça, vous pourriez vouloir regarder serialize () ;

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X