2011-01-06 9 views

答えて

7

http://help.dottoro.com/ljtfkhio.php

例1は、あなたのケースに関連する次のようになります。

 function Select() { 
      var input = document.getElementById ("myText"); 
      if (input.selectionStart === undefined) { // Internet Explorer 
       var inputRange = input.createTextRange(); 
       inputRange.moveStart ("character", 1); 
       inputRange.collapse(); 
       inputRange.moveEnd ("character", 1); 
       inputRange.select(); 
      } 
      else {  // Firefox, Opera, Google Chrome and Safari 
       input.selectionStart = 1; 
       input.selectionEnd = 2; 
       input.focus(); 
      } 
     } 
+0

これは、リンクされたページの関連部分の要約に役立ちます。 –

+0

@ティム、私はページ全体が質問に関連していると思います。 –

+1

私の主張は、この答えがリンクなしで完全に役に立たなくなったか、リンクが機能しなくなったということでした。 –

2

IE以外のブラウザでは、テキストエリアの値をselectionStartselectionEndに設定するか、setSelectionRange()関数を使用することができます(このメソッドが存在する理由は分かりませんが、不要と思われます)。しかし、IEではもう少し複雑です。

var setInputSelection = (function() { 
    function offsetToRangeCharacterMove(el, offset) { 
     return offset - (el.value.slice(0, offset).split("\r\n").length - 1); 
    } 

    return function(el, startOffset, endOffset) { 
     el.focus(); 
     if (typeof el.selectionStart == "number" && typeof el.selectionEnd == "number") { 
      el.selectionStart = startOffset; 
      el.selectionEnd = endOffset; 
     } else { 
      var range = el.createTextRange(); 
      var startCharMove = offsetToRangeCharacterMove(el, startOffset); 
      range.collapse(true); 
      if (startOffset == endOffset) { 
       range.move("character", startCharMove); 
      } else { 
       range.moveEnd("character", offsetToRangeCharacterMove(el, endOffset)); 
       range.moveStart("character", startCharMove); 
      } 
      range.select(); 
     } 
    }; 
})(); 

var textarea = document.getElementById("foo"); 

// Select the text between the second and third characters inclusive 
setInputSelection(textarea, 1, 3); 
関連する問題