Je suis curieux de savoir pourquoi vous devez mettre à jour un champ caché et avoir vos données dupliquées. Mais si vous insistez, voici une "solution unique", bien que vous perdiez un peu de souplesse en procédant ainsi au lieu de joindre manuellement chaque élément.
D'abord, le HTML :
<form id="form">
<input type="text" id="txtName" />
<input type="hidden" id="hdnName" />
<input type="text" id="txtEmail" />
<input type="hidden" id="hdnEmail" />
<select id="selGender">
<option value="male">Male</option>
<option value="female">Female</option>
</select>
<input type="hidden" id="hdnGender" />
</form>
Maintenant, le Javascript :
$(document).ready(function() {
$("#form").find("input[type='text'], select").change(function() {
$this = $(this);
var id = $this.attr("id");
id = id.split(3, id.length - 1);
$("#hdn" + id).val($this.val())
});
});
Pour que cela fonctionne, il faut que chacun de vos champs ait le statut de text
et qu'ils respectent également la convention de dénomination que j'ai utilisée ici ( [txt|sel]FieldName
, hdnFieldName
)