67 votes

garder un espace réservé sur le focus dans IE10

Sous WebKit et Firefox, le texte d'un fichier input 's placeholder reste dans les parages le focus -Il ne disparaît que lorsque input.val a quelque chose à offrir.

Existe-t-il un bon moyen de forcer IE10 à faire la même chose ?

0 votes

@JayBlanchard : Il y en a ? Qu'est-ce que c'est ? Je pense qu'il a essayé d'utiliser <input type="text" placeholder="text" /> et l'espace réservé disparaît lors de la mise au point dans IE 10. Que lui suggérez-vous d'essayer ? Je ne pense pas qu'il y ait une option "ne pas cacher l'espace réservé" ou quelque chose comme ça.

0 votes

@RocketHazmat J'ai répondu à sa question. Il a demandé s'il y avait une bonne façon de faire et j'ai répondu de façon appropriée. C'est tout aussi valable que votre réponse de ne pas utiliser IE10.

0 votes

@JayBlanchard : Ce n'était pas une réponse, je plaisantais. Je ne sais pas ce que vous attendiez de lui, parce que j'ai cherché sur Google et je n'ai pas trouvé beaucoup d'informations. Je suis curieux de savoir quelle est la bonne méthode que vous connaissez à ce sujet.

45voto

Kevin Hakanson Points 15498

En :-ms-input-placeholder pseudo-classe de la documentation de l Centre de développement d'Internet Explorer semble indiquer que cela fonctionne comme prévu.

Le texte de remplacement est affiché avec la mention sp ait le focus, c'est-à-dire qu'il soit possible de taper dans le champ. Lorsque le champ a le focus, le style normal du champ de saisie est rétabli et le texte de l'espace réservé est affiché avec le style spécifié. le texte de l'espace réservé disparaît.

Edita: Si je devais imiter ce comportement, je me tournerais vers les bibliothèques polyfill (qui définissent la valeur par défaut, font flotter un texte gris sur la zone de saisie, etc.) qui fonctionnent avec les anciennes versions d'IE. ) qui fonctionnent avec les anciennes versions d'IE. Elles devraient être modifiées, car elles sont probablement capables de détecter la capacité de l'espace réservé et de s'en remettre au navigateur. De plus, cela aurait une odeur de code de "détection de navigateur".

Mise à jour : Un "Question sur la disparition du texte de l'espace réservé dans IE a été posée lors d'une discussion sur Twitter #AskIE séance de questions le 19 juin 2014 et @IEDevChat a répondu "Nous avons un bogue actif pour ce comportement. La prochaine version fournira un correctif"

8 votes

Malheureusement, l'utilisateur se retrouve face à un champ vide et clignotant, sans aucun indice lui permettant de savoir ce qu'on lui demande d'y mettre.

9 votes

Ce n'est pas la bonne réponse, contrairement à la question : Existe-t-il un bon moyen de forcer IE10 à faire la même chose ? (maintenir le symbole visible lors de la mise au point)

5 votes

@DeborahSpeece : "Malheureusement, l'utilisateur se retrouve face à un champ vide et clignotant, sans aucun indice lui permettant de savoir ce qu'on lui demande d'y mettre." Eh bien, votre champ devrait avoir un <label> également. placeholder ne remplace pas <label> y <label> doit indiquer ce qui est destiné à aller dans le champ.

10voto

Vivek Points 657

Les développeurs de l'IE ont répondu lors de la AskIE session sur twitter IEDevChat qu'il s'agit d'une bogue connu dans la BugList d'IE qu'ils corrigeront dans une prochaine version.

Mise à jour:- Malheureusement, le comportement de l'espace réservé est toujours le même dans IE11, mais semble fonctionner dans les versions Edge/Spartan.

2 votes

Une version future ne résout pas le problème dans IE10, et ceci n'est donc pas une réponse à la question.

0 votes

Merci @m0sa, dudewad pour l'avoir signalé. J'ai mis à jour ma réponse pour qu'elle puisse aider les autres.

3voto

Mike Starov Points 1254

Il n'y a pas de bonne façon de faire en sorte que les espaces réservés restent au niveau du champ dans IE 10+, mais si vous essayez de remplacer les étiquettes par des espaces réservés, vous devriez jeter un coup d'œil à ceci.

http://mozmonkey.com/2014/02/css-only-placeholders-field-labels-i-e-float-labels/

Il s'agit d'un moyen de combiner les espaces réservés et les étiquettes pour améliorer l'expérience de l'utilisateur.

0 votes

Date du lien, pour ceux qui tomberaient sur ce site aujourd'hui

1voto

James Points 442

J'ai pensé partager la solution de contournement que j'ai utilisée pour résoudre ce problème, car il semble qu'il n'y ait toujours pas de solution pour IE11.

Dans mon exemple, IE11 a ajouté la valeur de mon espace réservé comme valeur réelle dans la zone de texte.

Voici ce que j'avais dans mon modèle de vue :

<textarea placeholder="Type your message">
</textarea>

Voici ce qui s'affiche sur le front-end dans IE11 :

<textarea placeholder="Type your message">
    Type your message
</textarea>

Ainsi, lorsque l'utilisateur se concentrait sur le champ, son curseur se trouvait à la fin de la chaîne " message here" - étrange !

La solution que j'ai trouvée consiste à ajouter une classe initiale à l'élément lors de son chargement. Ensuite, un événement bind de base sur "focus" pour vérifier si la classe était présente - si elle est présente, il supprime val et supprime également la classe. Ainsi, dès que l'utilisateur se concentre sur le champ, la valeur est réinitialisée à une chaîne vide.

Voici l'événement bind (dans cet exemple particulier, il s'agissait d'une fenêtre modale chargée dynamiquement). - vous pouvez simplifier cela) :

$(document).on( "focus", '.textarea', function () {
    if ($(this).hasClass('placeholder-val-present')) {
        $(this).val("").removeClass('placeholder-val-present');
    }
});

Cela fonctionne bien car lorsque l'utilisateur sort du champ par la tabulation, l'espace réservé est réajouté et cela fonctionne normalement dans IE11 et dans tous les autres navigateurs.

Je suis sûr que c'est un exemple de niche, mais il peut être utile à d'autres !

0voto

Ε Г И І И О Points 1582

L'astuce consiste à appeler focus() et select() sur l'élément de saisie.

$("#elementId" ).focus();
$("#elementId" ).select();

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