Question

Tout ce dont j'ai besoin, c'est de pouvoir détecter le moment où le texte est déposé dans une zone de texte. Je prends ensuite ce texte et fais des choses avec lui et efface le textarea. Il peut y avoir beaucoup de textareas et d’attentes très élevées en matière d’assurance-chômage. Le sondage n’est donc qu’un dernier recours.

Pour IE, "onfocus" fait le tour, puisque cet événement est déclenché après que l'utilisateur ait déposé des éléments dans la zone de texte.

Pour Firefox, je ne trouve pas d’événement qui fonctionne. J'ai essayé onmouseup et onchange ... je ne sais pas quoi essayer d'autre à partir de là. Je détesterais devoir interroger le textarea pour le contenu. Aide très appréciée. Merci.

Modifier: pour plus de précisions, "supprimé". signifie que l'utilisateur sélectionne (généralement) le texte de la page, mais peu importe où, le fait glisser et le dépose dans la zone de texte. Ce n'est pas la même chose que Ctrl + V, ou un clic droit de coller (qui utilise deux méthodes de détection différentes, BTW), ou (évidemment) de taper dans la zone de texte. Plus précisément, il s’agit de la "goutte" aspect du glisser-déposer. Je ne sais vraiment pas comment le formuler autrement.

Je pense que cette question a été posée avec assez de précision. Pour m'amuser, supposons que je parle d'une des autres opérations sur une zone de texte que vous avez tous choisi de partager. Si je voulais dire "coller", ne pensez-vous pas que j'aurais mentionné quelque chose sur le fait de coller dans le titre ou le contenu de ma question? Il en va de même pour taper dans une zone de texte. Mais peut-être que vous ne me connaissez pas tous assez bien pour savoir que je tape ce que je veux dire, plutôt que de taper par erreur des choses qui ne sont que quelque peu liées à ce que je veux dire.

Était-ce utile?

La solution 2

Les sondages semblent être la seule solution.

Lorsqu'une opération de glisser-déposer est lancée dans le navigateur, cela semble annuler tout ce qui se passe. Vous pouvez en témoigner en mettant " onmouseover " événements sur quelque chose sur la page, puis lancer une opération DnD et la faire glisser dessus. Les événements ne se déclencheront pas.

Cela semble être une simple coïncidence de la manière dont le navigateur gère en interne le "glisser-déposer". qu’il provoque le déclenchement de onfocus () pour la zone de texte dans IE et Safari. Je doute qu'il y ait beaucoup de définition dans la spécification W3 ... pas que cela compte, W3 est de la merde, et personne n'y adhère complètement.

Dans ma question, j’ai indiqué le luxe de vider la zone de texte après chaque utilisation. J’estime donc que l’enquête sur: textarea.value.length > 0 n’est pratiquement pas coûteuse et ne devrait pas poser de problèmes de performances.

Mais, hélas, il s'agit spécifiquement de déposer du contenu dans une zone de texte.

Descendez pour apaiser votre douleur.

Autres conseils

Pour Firefox, cela fonctionne pour moi:

window.addEventHandler("dragdrop", function(event) {alert("Drop it like it's hot!")}, true)

Ne fonctionne pas dans Safari, cependant. Je n'ai pas essayé IE.

Si vous souhaitez que votre zone de texte réagisse au texte en cours de suppression, de collage ou de saisie, votre seule solution serait un bouton. Même une minuterie qui interroge le contenu ne vous aidera pas.

Vous indiquez que vous souhaitez que l'utilisateur puisse taper du texte dans la zone de texte. Et vous indiquez que vous souhaitez effacer le texte chaque fois que l'événement est déclenché. Le navigateur ne peut pas savoir que l'utilisateur a fini de taper. Vous devez compter sur une action spécifique.

Maintenant, pour le déposer ou le coller, vous pouvez vous fier aux événements mouseup et keyup pour le détecter.

Qu'entendez-vous par "abandonné"? Parlez-vous d'une opération de collage (^ V)? Si c'est le cas, vous obtiendrez keydown / keyup (et la valeur sera lisible en keyup).

Un rappel générique qui se produira lors de toute mise à jour d'une entrée est "onchange" - vous pouvez essayer. Notez que lors de la frappe, l'appel n'est pas effectué avant la fin de la saisie et la défocalisation de l'entrée. Par conséquent, si vous avez besoin de mises à jour instantanées à la fois pour la saisie et d'autres formes de saisie, vous avez également besoin de l'option 'onkeyup'.

Modification à des fins de clarification: le 'échange' de l'OMI doit être déclenché lorsqu'un glisser-déposer entraîne l'ajout de contenu à une zone de texte; Je considère que c'est un bug de navigateur qui ne l'est pas (du moins dans Firefox). Je ne peux que convenir dans ce cas que l'interrogation est tout ce qui vous reste.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top