2009-05-26 4 views
1

Dans mon projet asp.net-mvc actuel, l'une de mes pages permet à l'utilisateur de sélectionner une valeur dans une liste déroulante après qu'une demande de publication ait effectué la mise à jour de plusieurs valeurs. Pour vous assurer que le délai de la publication ne perturbe pas l'utilisateur dans la sélection d'une autre valeur (et donc la création d'un autre message, la création d'un autre retard, etc.), je définis l'attribut désactivé select sur true.
Les entrées désactivées ne sont pas soumises à l'appel de publication.Désactiver la boîte de sélection sans supprimer la valeur de la publication

Comment est-ce que je peux indiquer visuellement à l'utilisateur que le travail est en cours et qu'il est impossible de sélectionner une nouvelle valeur sans supprimer l'entrée de la publication?

Répondre

1

Oui, cela m'ennuie aussi.

Fondamentalement, ce que vous devez faire est de cacher l'ancien bouton et de le remplacer par un bouton désactivé afin qu'il ressemble à l'utilisateur. De cette façon, il est toujours soumis mais ne peut pas être soumis deux fois.

En fait, j'ai trouvé ce qui semble être une copie de ceci à Problem with disabling submit buttons on form submit.

0

Aucune des réponses que j'ai trouvées dans le post de Cletus n'était entièrement ce que je cherchais.
Voici ce que j'ai trouvé. Ce n'est pas 100% réutilisable, mais il fait ce dont j'ai besoin et je me sens libre d'améliorer/éditer.

$('#productMixSelectorForm').change(function() { $(this).ChangeSelection() }); 

jQuery.fn.ChangeSelection = function() { 
    var html = $('<div class="hidden">'); 
    $(this).find('select, input').each(function() { 
     if ($(this).hasClass('hidden') == false) { 
      //Clone the original one into the hidden div 
      html.append($(this).clone()); 
      //Disable the original (visible) one and make it's name unique again 
      $(this).attr("disabled", true); 
      var name = $(this).attr("name"); 
      $(this).attr("name", name + "disabledDummy"); 
     } 
    });  
    //Add the collection of clones to the form so they get submitted 
    $(this).append(html); 
    $(this).submit(); 
} 
1

De votre réponse, je suppose que vous utilisez déjà jQuery. Dans ce cas, pourquoi n'obtenez-vous pas la valeur de la boîte de sélection, désactivez-la, puis publiez la valeur vous-même?

Bonus: BlockUI est un bon plugin jQuery pour, bien, bloquer l'interface utilisateur.