Semble désactivée par défaut des éléments d'entrée sont ignorés par $.serialize()
,
est-il un travail?
Semble désactivée par défaut des éléments d'entrée sont ignorés par $.serialize()
,
est-il un travail?
Activer temporairement.
var myform = $('#myform');
// Find disabled inputs, and remove the "disabled" attribute
var disabled = myform.find(':input:disabled').removeAttr('disabled');
// serialize the form
var serialized = myform.serialize();
// re-disabled the set of inputs that you previously enabled
disabled.attr('disabled','disabled');
Vous pouvez utiliser le proxy de la fonction:
(function($){
var proxy = $.fn.serializeArray;
$.fn.serializeArray = function(){
var inputs = this.find(':disabled');
inputs.prop('disabled', false);
var serialized = proxy.apply( this, arguments );
inputs.prop('disabled', true);
return serialized;
};
})(jQuery);
Désactivé éléments d'entrée ne pas être sérialisé parce que "désactivé" signifie qu'ils ne doivent pas être utilisés, par standard du W3C. jQuery est juste de respecter la norme, même si certains navigateurs ne le font pas. Vous pouvez contourner ce problème, par l'ajout d'un champ caché avec une valeur identique au champ désactivé, ou en faisant cela, via jQuery, quelque chose comme ceci:
$('#myform').submit(function() {
$(this).children('input[hiddeninputname]').val($(this).children('input:disabled').val());
$.post($(this).attr('url'), $(this).serialize, null, 'html');
});
Évidemment, si vous avez eu plus d'une entrée bloquée, vous devez effectuer une itération sur l'appariement des sélecteurs, etc.
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.