Focus (curseur au bon endroit dans le champ)

Fermé
rad - 11 mai 2004 à 12:28
 Woodone - 23 oct. 2011 à 14:10
Hug a tous,

mon probleme est que je suis en train de faire un petit chat, j'ai donc une fenetre contenant plusieurs frames:

- une qui affiche le texte
- une qui permet à l'utilisateur de saisir son message.

La premiere se rafraichie ttes les x secondes et elle fait donc perdre le focus a la seconde. En utilisant onBlur je reussi à rendre le focus a la seconde (et plus precisement a son champs text), mais mon probleme est que si l'utilisateur est en train de taper son message pendant cette operation, ca ne va pa car le focus est mis dans le champ text au debut.

par exemple si on tape 'bonjour a tous!' et que la premiere frame est rafraichie quand on en est au 'r', ca donne:

' a tous!bonjour' et le curseur est apres le '!'.
J'aimerai donc savoir si c'etait possible de specifier l'emplacement où l'on veut placer le curseur lors d'une prise de focus.

Merci d'avance! (déjà pour avoir bien voulu lire;-))

6 réponses

DaNot Messages postés 221 Date d'inscription mardi 30 septembre 2003 Statut Membre Dernière intervention 4 novembre 2005 163
11 mai 2004 à 16:09
Salut,

La fonction focus est assez simpliste ! Le seul moyen est :
1. sauvegarder le contenu de ton champs dans une variable,
2. raz la valeur du champs
3. donner le focus au champs
4. ajouter le contenu mémorisé dans le champs.
Le focus se trouvera à la fin du contenu.

En ce qui concerne l'ajout de texte en fin de page, mon avis est que la page doit être de toute manière rechargée. Une solution (peut etre lourde !) est de regenerer ta page en re-affichant ce qui existe deja et d'ajouter le reste ?!

DaNot
un Libre ouvert à la source...
2
DaNot Messages postés 221 Date d'inscription mardi 30 septembre 2003 Statut Membre Dernière intervention 4 novembre 2005 163
11 mai 2004 à 16:34
Salut,

Voici un exemple
<html>

<script>
function setFocus( ) {
   var tValue = document.forms[0].elements["iSaisie"].value;
   document.forms[0].elements["iSaisie"].value = "";
   document.forms[0].elements["iSaisie"].focus( );
   document.forms[0].elements["iSaisie"].value = tValue;
}
</script>

<body>

<form>
   <input type="text" value="Saisie" name="iSaisie">
   <input type="button" value="go" onclick="setFocus(); return true;">
</form>

</body>

</html>
DaNot
un Libre ouvert à la source...
2
ERCECHAT Messages postés 1 Date d'inscription jeudi 2 septembre 2010 Statut Membre Dernière intervention 2 septembre 2010
2 sept. 2010 à 19:54
Merci +++. Votre script m'a enfin permis de resoudre très simplement un problème de fichier communiquant avec une base de donnée MySQL sur serveur. J'ai tourné en rond longtemps avec des solutions compliquées et douteuses trouvées sur le web pour obtenir le focus en fin de chaine. Avec votre script ça marche au poil.
0
j'ai aussi une interrogation: j'aimerai savoir si il est possible en javascript d'ajouter des lignes à la fin d'une page en cours d'utilisation.
Par exemple un bonton sur lequel on clique et qui ajoute à la fin de la page une phrase. (j'ai essayé avec document.write() mais ca ne produit pas l'effet recherché, ca me charge une page blanche avec ma phrase en haut à droite).
Merci ;-)
0
Salut,

merci pour ta réponse: un seul bémol (le petit 4/ )
car que je n'ai pas réussi à trouver comment afficher une variable javascript (j'm'y connais très peu)!
Si tu as 2 secondes pour m'expliquer ... Merci!

Pour le second pblem je pensais que c'etait possible de faire autrement car une fois j'ai chatté sur un site qui proposai un chat php (sans applet java) et où j'ai eu l'impression que les messages s'ajoutais sans rechargement complet de la page. (mais peut-etre que mes souvenirs sont corrompus lol)
en tous cas thank you for that message!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
didierma Messages postés 4 Date d'inscription samedi 4 novembre 2006 Statut Membre Dernière intervention 18 janvier 2009
16 nov. 2008 à 12:05
bonjour,

Une des solutions serait d'utiliser des DIV à la place des Frames.
Ainsi tu peux faire tout cela en Ajax avec l'aide du Framework Prototype.
Ce framework peut rafraichir à intervale régulier des DIV ou tout autre élément nommé.
Regarde entre autre ceci : https://amillet.developpez.com/tutoriels/javascript/ajax-prototype/
ou encore ceci : http://prototypejs.org/download/

Amicalement
0
Bonjour,

La solution de DaNot a parfaitement réglé mon problème :

j'avais un champ texte qui a chaque saisies devait actualise la page,

j'avais réussi à récupérer le contenu du champ grâce a :

<input type="text" id="id" name="nom" value="<?php echo $variable; ?>" onkeyup="submit();" />


Mais le problème c'est qu'à chaque saisie le champ perdait le focus, j'ai donc utilisé cette méthode :

<script language="javascript">
<!--
    function donner_focus(chp)
    {
        document.getElementById(chp).focus();
    }
-->
</script>

<body onload="donner_focus('id')">

</body>


j'avais bien le focus, mais au début du champ, donc le même problème que rad (cf premier post)
j'ai modifié ma fonction javascript avec la méthode de DaNot :

<script language="javascript">
<!--
    function donner_focus(chp)
    {
        var valueRecherche = document.getElementById(chp).value;

        document.getElementById(chp).value = '';

        document.getElementById(chp).focus();

        document.getElementById(chp).value = valueRecherche;
    }
-->
</script>

<body onload="donner_focus('id')"><code>


</body>
</code>

Et ça fonctionne (enjoy)

Merci
0