J'ai deux balises d'entrée avec un identifiant numérique sous une forme dans une page html. Sur le focus, je voudrais définir la valeur de la deuxième entrée à partir du premier et du deuxième caractère de la première entrée. Ensuite, je veux désélectionner le texte sélectionné dans la deuxième entrée. Il y a une façon de faire cela? J'ai écrit ce code HTML:

<label>Num. Fattura:
        <input type="text" name="numfattura1" onkeypress="return event.keyCode != 13" id="1" />
    </label>
    <label>Importo:
        <input type="text" name="importo1" onkeypress="return event.keyCode != 13" />
    </label>
    <br />
    <label>Num. Fattura:
        <input type="text" name="numfattura2" onkeypress="return event.keyCode != 13" id="2" onfocus="twoDigits(2)" />
    </label>
    <label>Importo:
        <input type="text" name="importo2" onkeypress="return event.keyCode != 13" />
    </label>
    <br />

Et cette fonction javascript:

function twoDigits(id){
    var previousId = id - 1;
    var prevoiusValue = document.getElementById(previousId).value;
    document.getElementById(id).value = prevoiusValue.substring(0,2);
    document.selection.empty();
    window.getSelection().removeAllRanges()
}

Je ne trouve pas comment désélectionner le texte sélectionné automatiquement.

4
Andrea Venanzi 9 nov. 2011 à 22:50

3 réponses

Meilleure réponse

Définissez selectionStart et selectionEnd à l'aide de setTimeOut.

http://jsfiddle.net/enQvT/ fonctionne dans Firefox.

function twoDigits(id){
    var previousId = id - 1;
    var prevoiusValue = document.getElementById(previousId).value;

    var elem = document.getElementById(id);
    setTimeout(function() {
               elem.selectionStart=0;
                elem.selectionEnd=0;
                }, 0);
    elem.value = prevoiusValue.substring(0,2);
}
2
Birey 9 nov. 2011 à 19:44

Appelez .focus() sur un autre élément de formulaire.

0
mikerobi 9 nov. 2011 à 18:53

Vous pouvez également vider et recharger l'entrée. Si vous souhaitez tester:

<input type="textfield" id="aaa" value="aaa" />
<input type="textfield" id="bbb" value="bbb" onmouseover="empty()"  />

<script>
var empty = function() {
    var ipt = document.getElementById('aaa');
    var iptval = ipt.value;
    ipt.value = "";
    ipt.value = iptval;
}
</script>
1
Yuri Ghensev 9 nov. 2011 à 19:33