Forums : Xul, Xbl, JS...

Aller à la discussion :  Plus récente Plus ancienne

# Valeur de textbox.value avant d'avoir eu le focus

Envoyé par : thefab

Date : 21/08/2006 14:58

Je suis devant un bug assez étrange: textbox.value n'a pas la même valeur selon qu'il ait déjà reçu le focus ou pas encore, est-ce que ça vous semble possible, avez-vous déjà rencontré un comportement similaire ?

Mon code simplifié:

Je récupère le texte sélectionné d'une textbox si il y a une sélection ou le texte entier sinon:

function getText()
    {
    var textbox = document.getElementById("textbox");
    if (textbox.selectionStart != textbox.selectionEnd)
        {
        return textbox.value.substring(textbox.selectionStart, textbox.selectionEnd);
        }
    return textbox.value;
    }

Ok, par contre je n'arrive pas à tester la valeur de textbox.value lorsque je le passe à une fonction:

test(getText());

Je n'arrive pas à lever d'exception ?

function test(text)
    {
    try
        {
        // Fonctionne uniquement si textbox à reçu le focus !
        if (!text)
            throw "Erreur";
        }
    catch (ex)
        {
        }
    }

J'ai résolu en levant l'exception dans la fonction getText() mais je ne comprends vraiment pas pourquoi ?

Fabrice

# Re: Valeur de textbox.value avant d'avoir eu le focus

Envoyé par : Paul Rouget

Date : 23/08/2006 09:38

Désolé, tu n'es pas très clair là (rapport avec ton exception et le focus).

As tu le meme comportement en faisant:

var foo = getText();
test(foo);

Es tu certain que la levée de l'exception n'est pas effectuée simplement parce que ton bloc try échoue ? Que se passe t il si tu rajoute un alert(ex) dans ton bloc catch ?

# Re: Valeur de textbox.value avant d'avoir eu le focus

Envoyé par : thefab

Date : 23/08/2006 16:59

Désolé, tu n'es pas très clair là (rapport avec ton exception et le focus).

Oups, c'est moi qui suit désolé j'ai oublié d'expliquer le rapport (c'est le commentaire dans le script).

En fait si le focus n'est pas passé au moins une fois par la zone de texte: textbox.value a une valeur indéterminée (que je n'arrive pas à comparer pour savoir si vide ou pas), par contre lorsque la zone de texte à reçu le focus: textbox.value a une valeur que je peux tester avec if(!text) et lever une exception correctement.

Que se passe t il si tu rajoute un alert(ex) dans ton bloc catch ?

Rien justement: l'exception n'est pas levée ! Par contre si le focus est passé par la zone de texte: mon texte est vide, le test fonctionne, l'exception est levée et ex vaut bien "Erreur".

C'est assez bizzard, et je n'arrive pas à reproduire l'erreur dans un code plus simple, en tout cas merci de te pencher sur le problème, je teste avec var foo = getText(); car l'affectation me semble une bonne piste...

# Re: Valeur de textbox.value avant d'avoir eu le focus

Envoyé par : thefab

Date : 23/08/2006 19:44

Rien n'y fait, même de passer par une variable intermédiaire ne change rien... le pire c'est que si je clic 20x sur le bouton 19x l'exception n'est pas levée et la 20ème fois oui.

Il n'est plus possible de poster des messages dans ce forum.


Copyright © 2003-2013 association xulfr, 2013-2016 Laurent Jouanneau - Informations légales.

Mozilla® est une marque déposée de la fondation Mozilla.
Mozilla.org™, Firefox™, Thunderbird™, Mozilla Suite™ et XUL™ sont des marques de la fondation Mozilla.