Sélectionner une partie d'une zone texte [Résolu]

Signaler
Messages postés
17
Date d'inscription
mercredi 27 août 2003
Statut
Membre
Dernière intervention
28 décembre 2010
-
Messages postés
17
Date d'inscription
mercredi 27 août 2003
Statut
Membre
Dernière intervention
28 décembre 2010
-
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

Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
14
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)
Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
14
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)
Messages postés
17
Date d'inscription
mercredi 27 août 2003
Statut
Membre
Dernière intervention
28 décembre 2010

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é...
Messages postés
17
Date d'inscription
mercredi 27 août 2003
Statut
Membre
Dernière intervention
28 décembre 2010

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.
Messages postés
17
Date d'inscription
mercredi 27 août 2003
Statut
Membre
Dernière intervention
28 décembre 2010

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 !