2009-08-16 6 views
31

Je sais que le comportement défini pour les formulaires Web est de ne pas soumettre les champs désactivés ... mais ce n'est pas la définition que je veux. Je veux utiliser ajax pour poster le formulaire et je veux qu'il obtienne tous les champs, même s'ils sont désactivés. Je ne veux pas construire une solution de contournement où je rends le champ "look disabled" ... ou dois le bidouiller où j'active les champs -> post -> disable.soumettre champs désactivés

est-il possible de faire ajaxSubmit() ou serialize() saisir les champs désactivés comme il se déplace à travers le DOM et saisir des valeurs? ou existe-t-il un autre plugin sérialisable qui peut le faire? ou est-ce que quelqu'un a un mod que je peux faire à l'un de ces plugins pour le faire fonctionner?

ou suis-je condamné à le pirater?

+2

Expliquer la série d'événements que vous souhaitez que l'utilisateur l'expérience , alors nous pouvons vous aider à trouver une solution. Il doit y avoir quelque chose d'autre à l'histoire, sinon il n'y a aucune raison d'utiliser une boîte de sélection si elle va juste être désactivée. –

+2

Voici une raison pour laquelle nous voulions cette fonctionnalité (dans un projet différent sans rapport avec OP). Nous avons un site Web AJAXed qui charge dynamiquement les options disponibles. Dans certains cas où différentes options ne peuvent pas être sélectionnées, nous en sélectionnons une et désactivons le contrôle. Cela doit être renvoyé au serveur car nous avons besoin du paramètre. (Oui, théoriquement, nous pourrions comprendre quelle serait la valeur sur le backend, mais puisque la logique a déjà été faite, il n'y a pas besoin de compliquer les choses.) –

+0

Eh bien, je suppose que c'est une conversation morte, mais quelqu'un l'a dépréciée , donc je l'ai upvoted. –

Répondre

33

Vous pouvez créer vos champs readonly, cela ne permet pas de modifier la valeur de vos contrôles.

Edit: Vous pouvez facilement écrire un « serializeDisabled » fonction, itérer sur les éléments de formulaire handicapés qui ont un attribut de nom et en utilisant la fonction jQuery.param à la fin, pour générer la chaîne sérialisée:

(function ($) { 
    $.fn.serializeDisabled = function() { 
    var obj = {}; 

    $(':disabled[name]', this).each(function() { 
     obj[this.name] = $(this).val(); 
    }); 
    return $.param(obj); 
    } 
})(jQuery); 
+8

vous ne pouvez pas faire une boîte