2017-09-08 3 views
0

J'ai le code suivant qui convertit toutes les valeurs de champ d'un formulaire en un seul objet. Cependant, il ne convertit pas les champs cachés chargés dynamiquement (mais il les convertira si leurs valeurs sont codées en dur). Selon mes recherches, serializeArray() devrait couvrir les champs cachés tant qu'ils ont des noms. Et les miens ont des noms. Donc, je ne peux pas comprendre ce qui ne va pas ici.serializeArray() ne fonctionne pas avec les champs cachés chargés dynamiquement

serializeArray():

var data = {}; 
$("#form1").serializeArray().forEach(function(x){ 
    data[x.name] = x.value; 
}); 
console.log(data); 

chargement dynamique des valeurs de champ caché à l'aide JQuery

$("#field1").val("400"); //400 is just an example here 

Forme:

<form id="form1"> 
    <!-- Not serialized --> 
    <input type="hidden" name="field-value.hidden.1" id="field1" value=""/> 

    <div class="container"> 
     <div class="row"> 
      <div class="col-sm-12"> 
       <!-- Works fine --> 
       <textarea id="field2" name="field-value.show.1" rows="3" cols="10"></textarea> 
      </div> 
     </div> 
    </div> 
</form> 

Résumé de l'émission:

serializeArra y fonctionne si l'entrée ressemble à:

<input type="hidden" name="field-value.hidden.1" id="field1" value="400"/> 

mais pas si elle est:

<input type="hidden" name="field-value.hidden.1" id="field1" value=""/> 

$("#field1").val("400"); 

Répondre

0

une séance d'entraînement, je viens de découvrir à la lecture ici: (https://stackoverflow.com/a/25402639/4996722)

$("input[id=field1]").val("400"); mettrait correctement la valeur là-bas. Cependant, cela peut être un bug JQuery car il n'y a pas de bonnes raisons pour lesquelles $("#field1").val("400") ne fonctionne pas car ils sont la même chose.