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

Messages postés
17
Date d'inscription
mercredi 27 août 2003
Dernière intervention
28 décembre 2010
- - Dernière réponse : KaiHo
Messages postés
17
Date d'inscription
mercredi 27 août 2003
Dernière intervention
28 décembre 2010
- 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 !
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
Messages postés
3435
Date d'inscription
lundi 26 décembre 2005
Dernière intervention
14 janvier 2011
3
Merci
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)

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 98 internautes nous ont dit merci ce mois-ci

Commenter la réponse de PetoleTeam
Messages postés
3435
Date d'inscription
lundi 26 décembre 2005
Dernière intervention
14 janvier 2011
3
Merci
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)

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 98 internautes nous ont dit merci ce mois-ci

Commenter la réponse de PetoleTeam
Messages postés
17
Date d'inscription
mercredi 27 août 2003
Dernière intervention
28 décembre 2010
0
Merci
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é...
Commenter la réponse de KaiHo
Messages postés
17
Date d'inscription
mercredi 27 août 2003
Dernière intervention
28 décembre 2010
0
Merci
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.
Commenter la réponse de KaiHo
Messages postés
17
Date d'inscription
mercredi 27 août 2003
Dernière intervention
28 décembre 2010
0
Merci
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 !
Commenter la réponse de KaiHo

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.