Cette question a été posée dans plusieurs formats différents, mais je ne peux obtenir aucune des réponses pour fonctionner dans mon scénario.
J'utilise jQuery pour implémenter l'historique des commandes lorsque l'utilisateur frappe les flèches haut / bas. Lorsque la flèche vers le haut est frappée, je remplace la valeur d'entrée par la commande précédente et je mets le focus sur le champ d'entrée, mais je veux que le curseur soit toujours positionné à la fin de la chaîne d'entrée.
Mon code, tel quel:
$(document).keydown(function(e) {
var key = e.charCode ? e.charCode : e.keyCode ? e.keyCode : 0;
var input = self.shell.find('input.current:last');
switch(key) {
case 38: // up
lastQuery = self.queries[self.historyCounter-1];
self.historyCounter--;
input.val(lastQuery).focus();
// and it continues on from there
Comment puis-je forcer le curseur à être placé à la fin de «entrée» après la mise au point?
javascript
jquery
focus
cursor
Jerodsanto
la source
la source
var temp = input.focus().val(); input.val('').val(temp);
input.focus().val(input.val());
contenteditable
éléments pour une raison quelconque, peut-être comme il faut utiliser.html()
plutôt que.val()
Cela semble un peu étrange, voire idiot, mais cela fonctionne pour moi:
Maintenant, je ne suis pas certain d'avoir reproduit votre configuration. Je suppose que
input
c'est un<input>
élément.En réinitialisant la valeur (à elle-même), je pense que le curseur se met à la fin de l'entrée. Testé dans Firefox 3 et MSIE7.
la source
J'espère que cela vous aidera:
la source
Chris Coyier a un mini plugin jQuery pour cela qui fonctionne parfaitement bien: http://css-tricks.com/snippets/jquery/move-cursor-to-end-of-textarea-or-input/
Il utilise setSelectionRange s'il est pris en charge, sinon il a un repli solide.
Ensuite, vous pouvez simplement faire:
la source
Qu'en est-il en une seule ligne ...
Cette ligne fonctionne pour moi.
la source
2 Réponse de artlung : Cela fonctionne avec la deuxième ligne uniquement dans mon code (IE7, IE8; Jquery v1.6):
Ajout: si l' élément d' entrée a été ajouté au DOM à l'aide de JQuery, un focus n'est pas défini dans IE. J'ai utilisé un petit truc:
la source
Ref: @ will824 Comment, Cette solution a fonctionné pour moi sans problème de compatibilité. Le reste des solutions a échoué dans IE9.
Testé et trouvé fonctionnant dans:
la source
Je sais que cette réponse arrive tard, mais je peux voir que les gens n'ont pas trouvé de réponse. Pour éviter que la touche haut ne place le curseur au début, juste à
return false
partir de la méthode gérant l'événement. Cela arrête la chaîne d'événements qui conduit au mouvement du curseur. Coller le code révisé de l'OP ci-dessous:la source
var key = e.charCode || e.keyCode || 0;
J'utilise le code ci-dessous et cela fonctionne bien
la source
Ce sera différent pour différents navigateurs:
Cela fonctionne dans FF:
Plus de détails sont dans ces articles ici sur SitePoint , AspAlliance .
la source
comme d'autres l'ont dit, clear and fill a fonctionné pour moi:
la source
définissez d'abord la valeur. puis réglez la mise au point. quand il se concentre, il utilisera la valeur qui existe au moment du focus, donc votre valeur doit être définie en premier.
cette logique fonctionne pour moi avec une application qui remplit un
<input>
avec la valeur d'un clic<button>
.val()
est réglé en premier. puisfocus()
la source
$('input[name=item1]').val(value).focus();
J'ai trouvé la même chose que suggérée ci-dessus par quelques personnes. Si vous
focus()
appuyez d'abord sur leval()
dans l'entrée, le curseur se positionnera à la fin de la valeur d'entrée dans Firefox, Chrome et IE. Si vous poussez d'abord leval()
dans le champ de saisie, Firefox et Chrome positionnent le curseur à la fin, mais IE le positionne à l'avant lorsque vousfocus()
.devrait faire l'affaire (il a toujours pour moi de toute façon).
la source
Au début, vous devez définir le focus sur l'objet de zone de texte sélectionné et ensuite vous définissez la valeur.
la source
fonctionne pour tous les navigateurs ie ..
la source
En voici un autre, un one liner qui ne réaffecte pas la valeur:
la source
la source
La réponse de scorpion9 fonctionne. Juste pour être plus clair, voir mon code ci-dessous,
la source
Il se concentrera avec le point de la souris
$ ("# TextBox"). Focus ();
la source