198 votes

Comment modifier le texte d'une étiquette ?

J'ai une liste de boutons radio et lorsque je clique sur l'élément du bouton radio, je dois changer le texte de son étiquette. Mais pour une raison quelconque, cela ne fonctionne pas. Le code est ci-dessous :

<asp:Label ID="lblVessel" Text="Vessel:" runat="server"></asp:Label>

<script language="javascript">
  $(document).ready(function() {

    $('#rblDiv input').click(function() {
      var selected = $("#rblDiv input:radio:checked").val();
      if (selected == "exportpack") {
        $('#lblVessel').text("NewText");
      }
    });
  });
</script>

0 votes

Je ne suis pas un spécialiste d'ASP.NET mais je pense que l'identifiant généré pour le navigateur ne conserve pas l'identifiant que vous lui avez fourni côté serveur. Faites un view source et collez le code correspondant ici.

317voto

user1697483 Points 141

J'avais le même problème parce que j'utilisais

$("#LabelID").val("some value");

J'ai appris que vous pouvez soit utiliser la méthode provisoire jquery pour effacer d'abord puis ajouter :

$("#LabelID").empty();
$("#LabelID").append("some Text");

Ou conventionnellement, vous pourriez utiliser :

$("#LabelID").text("some value");

OU

$("#LabelID").html("some value");

0 votes

J'ai appliqué la même chose mais cela ne fonctionne pas. J'ai utilisé des pages enfant. Comment j'écris dans les pages enfant. J'écris $('#contentPlaceHolderId_LabelID') ça ne marche pas. J'ai également changé le ClientMode en Static mais cela ne fonctionne pas. Veuillez m'aider.

0 votes

J'ai utilisé $('[id*=LabelID]').text("some value"); parce que mon contrôle était celui du serveur.

0 votes

Merci, Monsieur.

59voto

SLaks Points 391154

ASP.Net génère automatiquement des identifiants client uniques pour les contrôles côté serveur .

Changez-le en

 $('#<%= lblVessel.ClientID %>')

En ASP.Net 4.0, vous pouviez également définir le paramètre ClientIDMode propriété a Static à la place.

48voto

Codesleuth Points 5443

Essayez ça :

$('[id$=lblVessel]').text("NewText");

El id$= correspondra aux éléments qui se terminent par ce texte, ce qui est la façon dont ASP.NET génère automatiquement les identifiants. Vous pouvez le rendre plus sûr en utilisant span[id=$=lblVessel] mais en général, ce n'est pas nécessaire.

5voto

Sravan Points 582
<asp:RadioButtonList ID="rbtnType" runat="server">
    <asp:ListItem Value="C">Co</asp:ListItem>
    <asp:ListItem Value="I">In</asp:ListItem>
    <asp:ListItem Value="O">Out</asp:ListItem>
</asp:RadioButtonList>
<br />
<asp:Label ID="lblLabelName" runat="server"></asp:Label>
<script type="text/javascript">
    $(document).ready(function() {
        $("#<%=rbtnType.ClientID%>").change(function() {
            var rbvalue = $("input[@name=<%=rbtnType.ClientID%>]:radio:checked").val();
            if (rbvalue == "C") {
                $('#<%=lblLabelName.ClientID %>').html('text1');
            } else if (rbvalue == "I") {
                $('#<%=lblLabelName.ClientID %>').html('else text2');
            } else if (rbvalue == "O") {
                $('#<%=lblLabelName.ClientID %>').html('or elsethistext');
            }
        });
    });
</script>

5voto

atconway Points 4164

Je viens de passer par là moi-même et j'ai trouvé la solution. Voir un contrôle de serveur d'étiquettes ASP.NET en fait est redressé en tant que span (et non en tant qu'entrée), de sorte que l'utilisation de la propriété .val() pour obtenir/établir ne fonctionnera pas. Au lieu de cela, vous devez utiliser la propriété 'text' sur le span en conjonction avec la propriété .ClientID des contrôles. Le code suivant fonctionnera :

$("#<%=lblVessel.ClientID %>").text('NewText');

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X