Sélectionner une partie d'une zone texte

Résolu
KaiHo Messages postés 19 Date d'inscription mercredi 27 août 2003 Statut Membre Dernière intervention 24 mai 2021 - 25 déc. 2010 à 23:58
KaiHo Messages postés 19 Date d'inscription mercredi 27 août 2003 Statut Membre Dernière intervention 24 mai 2021 - 28 déc. 2010 à 15:23
Bonjour,

Voilà, dans un formulaire, j'ai une zone texte avec une date créée dynamiquement, sous le format j/m/aaaa.
Mais je veux que lorsque la zone obtient le focus, seulement une partie de la zone soit sélectionnée, en l'occurrence le jour et le mois. Pour cela, j'ai créé une fonction du genre
function select_date()	
{
var text=document.forms["ThisForm"].elements["date_t"].value;
long_select=text.indexOf("/",3);
}
De cette façon, j'ai récupéré la longueur de la zone à sélectionner, dans l'espoir que cela me soit utile... Mais je ne trouve pas de méthode pour sélectionner seulement "long_select" caractère.

Une idée, ou je me fais des illusions et cela n'existe pas ?

Merci d'avance, et passez de bonnes fêtes !

5 réponses

PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 17
28 déc. 2010 à 10:03
Bonjour,
il te faut regarder du côté de
FireFoX
- selectionStart = position début
- selectionEnd = position fin

IExplorer
- moveStart('character', position début)
- moveEnd ('character', valeur déplacement)


;O)
3
PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 17
28 déc. 2010 à 14:48
la fonction de sélection pourrait ressembler à cela
//----------------------------------------
function setSelection( where_, deb_, fin_){
  //-- Recup l'Objet
  var Obj = document.getElementById( where_);
  if( Obj){
    Obj.focus();
    if( typeof Obj.selectionStart != "undefined"){
      //-- place selection de debut
      Obj.selectionStart = deb_;
      //-- place selection de fin
      Obj.selectionEnd   = fin_;
    }
    else{ // IE and consort
      var Chaine = Obj.createTextRange();
      //-- placement en début
      Chaine.collapse();
      //--  modif position de depart
      Chaine.moveStart('character', deb_);
      //--  modif position de fin
      Chaine.moveEnd  ('character', fin_- deb_);
      //-- selectionne
      Chaine.select();
    }
  }
}
dommage de se priver de IExplorer, à toi de l'adapter pour ton besoin comme tu l'as déjà commencé.

;O)
3
KaiHo Messages postés 19 Date d'inscription mercredi 27 août 2003 Statut Membre Dernière intervention 24 mai 2021
28 déc. 2010 à 14:14
Génial...

Merci beaucoup...

Au passage, je créé tout ça sous Firefox, et tant mieux, parce que sous IE, ça me parait un peu compliqué...
0
KaiHo Messages postés 19 Date d'inscription mercredi 27 août 2003 Statut Membre Dernière intervention 24 mai 2021
28 déc. 2010 à 14:27
Pour plus de précision

function select_date()	
{
var text=document.forms["ThisForm"].elements["date_t"].value;
long_select=text.indexOf("/",3);
document.forms["ThisForm"].elements["date_t"].selectionStart=0;
document.forms["ThisForm"].elements["date_t"].selectionEnd=long_select;
}	

Comme ça, si ma date est 1/2/2011, je sélectionne "1/2" et si ma date est 31/12/2010, je sélectionne "31/12".
Exactement ce que je voulais.
0

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

Posez votre question
KaiHo Messages postés 19 Date d'inscription mercredi 27 août 2003 Statut Membre Dernière intervention 24 mai 2021
28 déc. 2010 à 15:23
Ouah, super...

Après modif, ça marche nickel !

function select_date()	
{
var text=document.forms["ThisForm"].elements["date_t"].value;
long_select=text.indexOf("/",3);
var Nom = navigator.appName;
if (Nom == 'Microsoft Internet Explorer') 
{
var Chaine = document.forms["ThisForm"].elements["date_t"].createTextRange();
//-- placement en début
Chaine.collapse();
//--  modif position de depart
Chaine.moveStart('character', 0);
//--  modif position de fin
Chaine.moveEnd  ('character', long_select);
//-- selectionne
Chaine.select();
}
else
{
document.forms["ThisForm"].elements["date_t"].selectionStart=0;
document.forms["ThisForm"].elements["date_t"].selectionEnd=long_select;
}	
}



Un très grand merci !
0
Rejoignez-nous