Votre question comporte deux volets.
1) Comment focaliser une entrée sur le chargement de la page?
Vous pouvez simplement ajouter l' autofocus
attribut à l'entrée.
<input id="myinputbox" type="text" autofocus>
Cependant, cela peut ne pas être pris en charge dans tous les navigateurs, nous pouvons donc utiliser javascript.
window.onload = function() {
var input = document.getElementById("myinputbox").focus();
}
2) Comment placer le curseur à la fin du texte d'entrée?
Voici une solution non-jQuery avec du code emprunté à une autre réponse SO .
function placeCursorAtEnd() {
if (this.setSelectionRange) {
// Double the length because Opera is inconsistent about
// whether a carriage return is one character or two.
var len = this.value.length * 2;
this.setSelectionRange(len, len);
} else {
// This might work for browsers without setSelectionRange support.
this.value = this.value;
}
if (this.nodeName === "TEXTAREA") {
// This will scroll a textarea to the bottom if needed
this.scrollTop = 999999;
}
};
window.onload = function() {
var input = document.getElementById("myinputbox");
if (obj.addEventListener) {
obj.addEventListener("focus", placeCursorAtEnd, false);
} else if (obj.attachEvent) {
obj.attachEvent('onfocus', placeCursorAtEnd);
}
input.focus();
}
Voici un exemple de la façon dont j'accomplirais cela avec jQuery.
<input type="text" autofocus>
<script>
$(function() {
$("[autofocus]").on("focus", function() {
if (this.setSelectionRange) {
var len = this.value.length * 2;
this.setSelectionRange(len, len);
} else {
this.value = this.value;
}
this.scrollTop = 999999;
}).focus();
});
</script>
Attention, vous pouvez maintenant le faire avec HTML5 sans JavaScript pour les navigateurs qui le prennent en charge:
Vous voudrez probablement commencer par cela et développer avec JavaScript pour fournir une solution de secours aux anciens navigateurs.
la source
la source
la source
Une façon portable de faire cela consiste à utiliser une fonction personnalisée (pour gérer les différences de navigateur) comme celle-ci .
Ensuite, configurez un gestionnaire pour le
onload
à la fin de votre<body>
balise, comme jessegavin l'a écrit:la source
Marche bien ...
la source
solution très simple en une ligne:
la source
C'est ce qui fonctionne bien pour moi:
fff sera une variable globale dont le nom n'est absolument pas pertinent et dont le but sera d'arrêter l'événement générique onload pour forcer le focus dans cette entrée.
De: http://webreflection.blogspot.com.br/2009/06/inputfocus-something-really-annoying.html
la source
Si vous ne pouvez pas ajouter à la balise BODY pour une raison quelconque, vous pouvez l'ajouter APRÈS le formulaire:
la source
Essayer:
Javascript pur:
Jquery:
la source
Ajoutez ceci en haut de votre js
Ou en html
la source