2016-06-13 1 views
0

J'ai une application web MVC (Razor). Le formulaire a 2 champs, une liste déroulante (Kendo) et un champ de saisie pour une date.Comment publier des champs de saisie conditionnellement

Une fois que l'utilisateur a modifié la liste déroulante, mon deuxième champ de saisie est activé ou désactivé en fonction du type choisi dans la liste déroulante. Lorsque le champ de saisie est désactivé, je remplis l'entrée avec une valeur par défaut.

Lorsque l'utilisateur soumet le formulaire, je reçois uniquement la valeur du champ de formulaire 2ème posté dans le viewmodel lorsque le 2ème champ est activé, lorsqu'il est désactivé la valeur n'est pas affichée. Je sais que c'est un modèle courant en HTML, que les champs désactivés ne font pas partie du POST.

Ma question: comment puis-je résoudre ce problème pour obtenir la valeur POSTed lorsque le champ est désactivé? Il doit être fait dans JS ...

+0

Pouvez-vous montrer votre code de travail? Il nous sera donc plus facile de donner une réponse. Est-ce que vous postez sur JS ou utilisez-vous @ Html.BeginForm? –

+0

Le message est envoyé par un bouton d'envoi normal en utilisant beginform dans Razor. –

Répondre

0

le fixe, dans le gestionnaire onchange de la liste déroulante JS joindre ce code:

var defaultDateValue = "2017-01-04"; //just for demo 
var $effectiveToInput = $("#@Html.IdFor(m => m.EffectiveToDate)"); 
$effectiveToInput.parent().append("<input type=\"hidden\" name=\"@Html.NameFor(m => m.EffectiveToDate)\" id=\"@Html.NameFor(m => m.EffectiveToDate)\" value=\"" + defaultDateValue +"\" />"); 

Et pour les autres types, je clair les champs cachés avec des contrôles:

function removeHiddenEffectiveToDateField() { 
    var $effectiveToInput = $("#@(Html.IdFor(m => m.EffectiveToDate))[type = hidden]"); 
    if (null !== $effectiveToInput) { 
     $effectiveToInput.remove(); 
    } 
} 
0

J'ai eu une exigence similaire, ce que j'ai fait, créé une classe, ce qui rendrait la zone de texte apparaît comme désactivé, en supprimant les événements de la souris et le style un peu

[https://codepen.io/DawsonMediaD/pen/Dqrck][1] 

ou

peu délicate, juste avant le poste, permettre à tous les