50 votes

Comment savoir si le texte d'une zone de texte est sélectionné?

J'ai des zones de texte <input type='text'> qui n'autorisent que les caractères numériques et ne permettent pas à l'utilisateur d'entrer un point (.) Plus d'une fois. Le problème est que si le texte dans la zone de texte est sélectionné, l'utilisateur a l'intention d'écraser le contenu avec un point, ce qui le rend autorisé! La question est, comment savoir en javascript si le texte de cette zone de texte est sélectionné ou non.

Merci

64voto

Tim Down Points 124501

Ce qui suit vous indiquera si tout le texte est sélectionné dans une entrée de texte dans tous les principaux navigateurs.

Exemple: http://www.jsfiddle.net/9Q23E/

Code:

 function isTextSelected(input) {
    if (typeof input.selectionStart == "number") {
        return input.selectionStart == 0 && input.selectionEnd == input.value.length;
    } else if (typeof document.selection != "undefined") {
        input.focus();
        return document.selection.createRange().text == input.value;
    }
}
 

2voto

Shadow Wizard Points 38568

Au lieu de frapper le mur de points et de sélections de chiffres, vous pouvez l'escalader facilement en vérifiant la valeur dans l'événement onchange .

HTML:

 <input type="text" onchange="ValidateNumericValue(this);" />
 

JS:

 function ValidateNumericValue(oInput) {
    var blnRequired = true; //set to false if allowing empty value

    var sValue = oInput.value;
    if (blnRequired && sValue.length == 0) {
        alert("Please enter a value");
        oInput.focus();
        return;
    }

    var numericValue = parseFloat(sValue);
    if (isNaN(numericValue)) {
        alert("Value is not a valid number");
        oInput.focus();
        return;
    }

    //put back to make 2.15A back to 2.15
    oInput.value = numericValue + "";
}
 

Cela vérifiera la valeur lorsqu'elle est modifiée (et l'utilisateur passe à un élément différent) et lorsqu'elle n'est pas valide, elle alerte et rétablit le focus.

Cas de test en direct: http://jsfiddle.net/yahavbr/NFhay/

1voto

Raposo Points 159

Vous pouvez obtenir l'id de l'élément sélectionné dans la page avec le code suivant:

 elem_offset = document.getSelection().anchorOffset;
elem = document.getSelection().anchorNode.childNodes[elem_offset];
alert(elem.id);
 

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