2009-02-17 5 views
1

J'essaie de comprendre s'il est possible d'utiliser Javascript pour mettre en évidence une plage spécifique de données dans un champ de texte.Comment puis-je mettre en évidence un sous-ensemble du texte dans une zone de saisie?

textfield.select(); 

Ce ^^ fonctionne pour sélectionner le texte entier, mais pour tous mes googler, je ne l'ai pas trébuché sur un moyen de sélectionner, par exemple, les caractères 2 à 10 du texte saisi. Est-ce possible?

Répondre

1

Cet objet vous permettra d', définissez & modifier la région sélectionnée d'une zone de texte.

function SelectedText(input) { 
    // Replace the currently selected text with the given value. 
    this.replace = function(text) { 
    var selection = this.get(); 

    var pre = input.value.substring(0, selection.start); 
    var post = input.value.substring(selection.end, input.value.length); 

    input.value = pre + text + post; 

    this.set(selection.start, selection.start + text.length); 

    return this; 
    } 

    // Set the current selection to the given start and end points. 
    this.set = function(start, end) { 
    if (input.setSelectionRange) { 
     // Mozilla 
     input.focus(); 
     input.setSelectionRange(start, end); 
    } else if (input.createTextRange) { 
     // IE 
     var range = input.createTextRange(); 
     range.collapse(true); 
     range.moveEnd('character', end); 
     range.moveStart('character', start); 
     range.select(); 
    } 

    return this; 
    } 

    // Get the currently selected region. 
    this.get = function() { 
    var result = new Object(); 

    result.start = 0; 
    result.end = 0; 
    result.text = ''; 

    if (input.selectionStart != undefined) { 
     // Mozilla 
     result.start = input.selectionStart; 
     result.end = input.selectionEnd; 
    } else { 
     // IE 
     var bookmark = document.selection.createRange().getBookmark() 
     var selection = inputBox.createTextRange() 
     selection.moveToBookmark(bookmark) 

     var before = inputBox.createTextRange() 
     before.collapse(true) 
     before.setEndPoint("EndToStart", selection) 

     result.start = before.text.length; 
     result.end = before.text.length + selection.text.length; 
    } 

    result.text = input.value.substring(result.start, result.end); 

    return result; 
    } 
} 
Questions connexes