2009-05-15 6 views
0

J'ai un champ dans mon modèle - appelez-le 'distance' - et je veux écrire une vue qui contient à la fois une case à cocher et une zone de texte.Plusieurs contrôles dans la vue MVC qui modifient la même valeur de modèle

Si la case est cochée, la zone de texte est désactivée et 'distance' obtient la valeur 0 lorsque le formulaire est soumis.

Si la case à cocher n'est pas cochée, 'distance' obtient la valeur de la zone de texte lors de la soumission du formulaire.

Quelqu'un a des conseils pour ce faire? C'est la logique d'assigner une valeur de modèle basée sur l'état des deux contrôles qui me confondent ...

Répondre

1

Le comportement de l'interface utilisateur peut être accompli avec Javascript via un gestionnaire d'événement onclick dans la case à cocher. La seule valeur que vous devez soumettre est le champ d'entrée dont la valeur sera définie sur 0 ou tout ce qui est défini manuellement.

Avec jQuery vous auriez:

$('#checkbox_id').click(function() { $('inputfield_id').val('0'); 
+0

Je vais faire un essai et vous faire savoir. Merci! – user101306

+0

Vous devez ignorer complètement la case à cocher et vous concentrer uniquement sur le champ de saisie de texte. La vérification dans le champ définit simplement la valeur d'entrée de texte à 0. – aleemb

1

Le comportement du modèle dépend de ce que la case à cocher représente. S'il s'agit d'une propriété réelle sur le Modèle, vous devrez vérifier la valeur côté serveur ainsi que (facultativement) en utilisant la méthode javascript d'aleemb.

Si une vérification dans ce champ représente simplement une distance de zéro, alors la méthode d'aleemb suffira.

+0

Il n'y a qu'une seule propriété sur le modèle dans tout cela. Je pensais juste que ce serait plus compliqué qu'il n'y paraît parce qu'il y a deux contrôles qui conspirent pour définir une valeur unique. – user101306

0

réponse de Aleemb a travaillé comme un charme, avec quelques modifications mineures:

$("#Distance_checkbox").click(function() { 
    if ($(this).is(':checked')) { 
     $("#Distance_textbox").val(0); 
     $("#Distance_textbox").attr("disabled", true); 
    } 
    else { 
     $("#Distance_textbox").val(""); 
     $("#Distance_textbox").attr("disabled", false); 
    } 
}); 
Questions connexes