L’événement TextChanged du contrôle TextBox peut ne pas se déclencher si la saisie semi-automatique est activée dans Internet Explorer

Avertissement

L’application de bureau Internet Explorer 11, mise hors service et dont le support a pris fin, a été désactivée définitivement via une mise à jour Microsoft Edge sur certaines versions de Windows 10. Pour plus d’informations, consultez le forum aux questions sur la mise hors service de l’application de bureau Internet Explorer 11.

Cet article fournit la solution de contournement pour résoudre le problème lié au fait que l’événement TextChanged d’un contrôle TextBox ne se déclenche pas si la fonctionnalité de saisie semi-automatique est activée dans Internet Explorer.

Version d’origine du produit : Internet Explorer
Numéro de la base de connaissances d’origine : 873198

Symptômes

Lorsque vous activez la fonctionnalité de saisie semi-automatique des formulaires dans Microsoft Internet Explorer, puis que vous sélectionnez un texte dans la liste déroulante Saisie semi-automatique d’un contrôle TextBox dans une application web, l’événement TextChanged du contrôle TextBox ne se déclenche pas même si le texte du contrôle TextBox change.

Cause

Ce comportement se produit car Internet Explorer ne peut pas déclencher l’événement TextChanged d’un contrôle TextBox lorsque vous sélectionnez du texte dans la liste déroulante à l’aide de la fonctionnalité saisie semi-automatique.

Solution de contournement

Pour contourner ce comportement, désactivez la fonctionnalité de saisie semi-automatique du formulaire Web. Pour désactiver la fonctionnalité, procédez comme suit :

  1. Dans Explorateur de solutions, cliquez avec le bouton droit sur WebForm1.aspx, puis cliquez sur Afficher Designer.

  2. Basculez vers la vue HTML de WebForm1.aspx.

  3. Localisez le code suivant :

    <form id="Form1" method="post" runat="server">
    
  4. Remplacez le code que vous avez trouvé à l’étape 3 par le code suivant :

    <form id="Form1" method="post" runat="server" autocomplete="off">
    

Procédures pour reproduire le problème

Étape 1 : Activer la fonctionnalité de saisie semi-automatique pour les formulaires

  1. Démarrez Internet Explorer.

  2. Dans le menu Outils, cliquez sur Options Internet. La boîte de dialogue Options Internet s’affiche.

  3. Sous l’onglet Contenu , cliquez sur Saisie semi-automatique sous Informations personnelles. La boîte de dialogue Paramètres de saisie semi-automatique s’affiche.

  4. Sous Utiliser la saisie semi-automatique pour, cliquez pour sélectionner la zone Formulaires case activée, puis cliquez sur OK.

  5. Dans la boîte de dialogue Options Internet, cliquez sur OK.

Étape 2 : Créer une application web qui contient un contrôle TextBox

  1. Démarrez Microsoft Visual Studio .NET.

  2. On the File menu, point to New, and then click Project. La boîte de dialogue Nouveau projet s'affiche.

  3. Cliquez sur Projets Visual C# sous Types de projets, cliquez sur ASP.NET Application web sous Modèles, tapez http://localhost/MyTestAppin la zone Emplacement , puis cliquez sur OK.

  4. Dans Explorateur de solutions, cliquez avec le bouton droit sur WebForm1.aspx, puis cliquez sur Afficher Designer.

  5. Dans le menu Affichage , cliquez sur Boîte à outils.

  6. Ajoutez un contrôle TextBox au formulaire Web. Par défaut, un contrôle TextBox nommé TextBox1 est créé.

  7. Dans la fenêtre Propriétés du contrôle TextBox1 TextBox, définissez la propriété AutoPostBack sur True.

  8. Dans la fenêtre Propriétés du contrôle TextBox1 TextBox1, cliquez sur Événements, puis double-cliquez sur TextChanged. La procédure TextBox1_TextChanged est ajoutée dans la vue Code du fichier WebForm1.aspx.

  9. Insérez un point d’arrêt au niveau de la procédure TextBox1_TextChanged .

  10. Dans le menu Fichier , cliquez sur Enregistrer tout pour enregistrer tous les fichiers.

Étape 3 : Générer, puis déboguer l’application web

  1. Dans le menu Générer, cliquez sur Générer la solution.

  2. Dans le menu Déboguer , cliquez sur Démarrer. La page WebForm1 - Microsoft Internet Explorer Web s’affiche.

  3. Dans la zone de texte, tapez text1, puis appuyez sur Entrée. Vous remarquez que le débogueur s’arrête à la procédure TextBox1_TextChanged dans la vue Code du fichier WebForm1.aspx.

  4. Dans le menu Déboguer , cliquez sur Continuer.

  5. Dans la zone de texte de la page WebForm1 - Microsoft Internet Explorer Web, tapez text2, puis appuyez sur Entrée. Vous remarquez que le débogueur s’arrête à nouveau à la procédure TextBox1_TextChanged dans la vue de code du fichier WebForm1.aspx.

  6. Dans le menu Déboguer , cliquez sur Continuer.

  7. Dans la zone de texte de la page WebForm1 - Microsoft Internet Explorer Web, tapez t. Vous remarquez une liste déroulante de mots que vous avez tapés précédemment.

  8. Utilisez la touche Flèche bas pour sélectionner text1, puis appuyez sur Entrée.

    Vous voyez que l’événement TextChanged du contrôle TextBox1 TextBox ne se déclenche pas.

References

Pour plus d’informations, consultez TextBox.AutoPostBack, propriété.