3 votes

Comment ajouter un onblur et un onfocus à une boîte de saisie dont les valeurs sont déterminées par une boîte de sélection ?

J'essaie de faire en sorte que l'on puisse cliquer pour faire disparaître et réapparaître une valeur dans une zone de texte (c'est assez simple), mais la valeur de la zone de texte est déterminée par ce qui est sélectionné dans la zone de sélection.

Voici le javascript :

function changeValue(){
    var option=document.getElementById('filter').value;

    if(option=="1"){
            document.getElementById('field').value="Option 1";
    }
        else if(option=="2"){
            document.getElementById('field').value="Option 2";
        }

        else if(option=="3"){
            document.getElementById('field').value="Option 3";
        }

}

Et voici le HTML :

<input class="input" type ='text' name="key" id ="field" value ="Option 1" />
<select name="filter" id="filter" onchange="changeValue();">
<option id="1" value="1">Option 1</option>
<option id="2" value="2">Option 2</option>
<option id="3" value="3">Option 3</option>
</select>

Le problème auquel je suis confronté est qu'une fois que la boîte de saisie est cliquée, elle passe à la valeur 1 au lieu de revenir à la valeur déterminée en javascript. Toute aide à ce sujet serait très appréciée.

1voto

Hat Points 997

Déclarez une var globale x au début de votre fichier js, définissez une valeur pour cette var dans chaque instance.

var x = 0;

function changeValue(){
var option=document.getElementById('filter').value;

if(option=="1"){
        document.getElementById('field').value="Option 1";
        x = 'option 1';
}
    else if(option=="2"){
        document.getElementById('field').value="Option 2";
        x = 'option 2';
    }

    else if(option=="3"){
        document.getElementById('field').value="Option 3";
        x = 'option 3';
    }

}

créer une nouvelle fonction qui sera appelée onblur

function inputOnBlur() {
    document.getElementById('field').value = x;
}

html

<input onblur="inputOnBlur()" class="input" type ='text' name="key" id ="field" value ="Option 1" />

si vous voulez une fonction onfocus pour effacer le texte, vous pouvez faire quelque chose de similaire

function inputOnFocus() {
     document.getElementById('field').value = '';
}

J'espère que cela vous aidera !

0voto

Never Back Down Points 2164

Cela fonctionne pour moi, regardez le code et la démo ci-dessous, peut-être n'avez-vous pas inclus vos scripts dans la balise scripts.

<html>   
   <head>
        <script>
            function changeValue(){
            var option=document.getElementById('filter').value;

            if(option=="1"){
                    document.getElementById('field').value="Option 1";
            }
                else if(option=="2"){
                    document.getElementById('field').value="Option 2";
                }

                else if(option=="3"){
                    document.getElementById('field').value="Option 3";
                }

             }
           </script>
   </head>
   <body>

      <input class="input" type ='text' name="key" id ="field" value ="Option 1" />
      <select name="filter" id="filter" onchange="changeValue();">
        <option id="1" value="1">Option 1</option>
        <option id="2" value="2">Option 2</option>
        <option id="3" value="3">Option 3</option>
     </select>
  </body>
</html>

http://jsfiddle.net/d4uAh/

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X