2010-05-10 10 views
0

J'ai un problème avec une page maître contenant un asp: textbox auquel j'essaye d'accéder en utilisant jQuery. J'ai lu beaucoup de threads à ce sujet et j'ai essayé toutes les différentes approches que j'ai vues, mais peu importe, le résultat final finit par être indéfini.Problème avec jQuery selector et MasterPage

Ceci est la partie pertinente du code MasterPage:

<p><asp:Label ID="Label1" AssociatedControlID="osxinputfrom" runat="server">Navn</asp:Label><asp:TextBox CssClass="osxinputform" ID="osxinputfrom" runat="server"></asp:TextBox></p> 

Lorsque je clique sur le bouton, le code suivant du fichier d'un jQuery est exécuté:

show: function(d) { 
     $('#osx-modal-content .osxsubmitbutton').click(function (e) { 
     e.preventDefault(); 
     if (OSX.validate()){      
      $('#osx-modal-data').fadeOut(200); 
      d.container.animate(
      {height:80}, 
      500, 
      function() { 
       $('#osx-modal-data').html("<h2>Sender...</h2>").fadeIn(250, function() { 
       $.ajax({ 
        type: "POST", 
        url: "Default.aspx/GetDate", 
        data: "{'from':'" + $("#osxinputfrom").val() + "','mailaddress':'" + $("#osxinputmail").val() + "','header':'Test3','message':'Test4'}", 
        contentType: "application/json; charset=utf-8", 
        dataType: "json", 
        success: function(msg) { 
        $('#osx-modal-data').fadeOut(200, function() { 
         $('#osx-modal-data').html('<h2>Meldingen er sendt!</h2>'); 
         $('#osx-modal-data').fadeIn(200); 
        }); 
        }, 
        error: function(msg){ 
        $('#osx-modal-data').fadeOut(200, function() { 
         $('#osx-modal-data').html('<h2>Feil oppstod ved sending av melding!</h2>'); 
         $('#osx-modal-data').fadeIn(200); 
        }); 
        } 
       }); 
       }); 
      } 
     ); 
     } 
     else{ 
      $('#osxinputstatus').fadeOut(250, function() { 
      $('#osxinputstatus').html('<p id="osxinputstatus">' + OSX.message + '</a>'); 
      $('#osxinputstatus').fadeIn(250); 
      }); 
     }   
     }); 
    }, 

Donc, le problème ici est que $ ("# osxinputfrom"). Val() évalué à Undefined. Je comprends que la page maître ajoutera un préfixe à l'ID, j'ai donc essayé d'utiliser l'ID de la page quand elle est exécutée comme ct100_osxinputfrom, et j'ai aussi essayé d'autres biches que j'ai trouvées en recherchant $ ("# <% = osxinputfrom.ClientID%> "), mais il finit par être non défini dans la méthode appelée de toute façon par la méthode jQuery ajax. Les troisième et quatrième paramètres de la fonction ajay qui est codée en dur comme Test3 et Test4 se passe bien dans la méthode backend C#.

Donc, ma question est simple: Comment puis-je réécrire le sélecteur jQuery pour récupérer la valeur correcte de la zone de texte? (Avant je pages maître il a bien fonctionné par la voie)

Meilleures salutations Daemon

+0

Quelle version d'ASP.NET êtes-vous? Avec la version 4.0, vous pouvez essayer d'utiliser la propriété 'ClientIDMode' pour faciliter la recherche du contrôle lors de l'exécution. –

Répondre

1

Il sera plus lent mais pourquoi ne pas essayer d'ajouter cssclass = "bla" à votre étiquette, puis l'obtenir avec $('.bla').val();?

+0

J'ai fini d'utiliser ce code parce que je ne pouvais pas faire fonctionner ce code en utilisant le client.ID ... au moins ça a aidé – Bachask8

0

Vous devez utiliser l'attribut se termine avec le sélecteur

Link

il serait $("id$='osxinputfrom'")

+0

J'ai essayé cela aussi, et je m'attendais à ce que cela fonctionne, mais cela donne toujours Undefined comme réponse. Quelque chose que j'ai remarqué maintenant est encore plus étrange est que dans la même fonction jQuery, à l'intérieur de la validation, j'ai la ligne de code suivante: var email = $ ('# osx-modal-data # ctl00_osxinputemail'). Val() ; Cela fonctionne très bien, mais dans la partie ajax de la fonction, le même sélecteur ne fonctionne pas. –