2009-06-22 12 views
0

J'ai un formulaire Web qui contient beaucoup de fonctionnalités JavaScript pour manipuler le DOM. Ceci est réalisé en utilisant AJAX pour appeler un service qui me renverra ce que j'ai à faire, comme masquer des éléments, des cascades, enlever et insérer de nouveaux éléments dans un select, etc.Les éléments du client ne sont pas mis à jour lorsque le formulaire est publié

Tout fonctionne comme prévu à part une fonction particulière. Cette fonction désactive et définit une valeur par défaut dans un élément select en fonction de ce que mon appel AJAX a renvoyé. Par exemple, disons que j'avais sélectionné "foo" parmi les options suivantes et enregistré l'enregistrement:

<select id="mySelect2"> 
    <option value="0">Default</option> 
    <option value="foo">Foo</option> 
    <option value="another_foo">Foo 2</option> 
</select> 

Great! Maintenant, j'ai changé d'autre élément dans mon formulaire Web qui a déclenché mon appel AJAX. Les données retournées me disent que je devrais sélectionner Default et désactiver l'élément select. Cela fonctionne très bien. Mais, quand je sauvegarde à nouveau l'enregistrement et le vérifie dans le DB la valeur par défaut de 0 dans ce cas n'est pas sauvée. L'enregistrement reste avec l'élément sélectionné précédent ("foo").

Si vous êtes curieux, j'utiliser le code suivant pour ce faire:

  1. Associe l'appel AJAX

    $('myElement').change(GetData); 
    
  2. méthode GetData

    $.ajax({ 
        type: 'POST', 
        url: 'myUrl', 
        data: "{'id':'" + myIdFromMyElement + "'"}", 
        contentType: 'application/json; charset=utf-8', 
        dataType: 'json', 
        success: OnSuccess, 
        error: OnError 
    }); 
    
  3. Manipulez la sélection élément selon les données retournées:

    function OnSuccess(data, textStatus) { 
        if (data.d.DisableMySelect2){ 
         $('#mySelect2').val('0'); 
         $('#mySelect2').attr('disabled', 'disabled'); 
        } 
    } 
    

Pourquoi est-ce qui se passe?

EDIT:

D'autres enquêtes montré que ma forme Web n'a pas délier correctement la valeur modifiée, mais quand je vais Request.Form["mySelect2"] je peux vraiment voir la valeur actualisée, donc apparemment il n'y a rien de mal avec le côté client des choses.

Répondre

2

Je pense que cela se produit car les éléments de formulaire disabled ne sont pas soumis avec le formulaire.

Vous pouvez gérer la soumission de formulaire via un appel AJAX ou utiliser une entrée masquée pour stocker la valeur de l'option sélectionnée de l'élément SELECT désactivé.

+0

Oui, apparemment, vous avez raison, mais d'autres enquêtes ont montré que mon formulaire Web ne délie pas la valeur correctement, mais ma demande contient la valeur mise à jour lorsque vous allez Request.Form ....?! –

+0

place sur CMS. Merci. –

+0

Vous êtes les bienvenus afgallo. – CMS

Questions connexes