2010-07-28 1 views
0

사용자 선택에서 사업부에서 텍스트를 얻을 :어떻게 사용 안 함 선택을 가진 요소가

<div id="text" onmousedown="selectionStart();" onmouseup="selectionEnd();"> 
    Stuff Here 
</div> 

는 내가하고 싶은 것은 사용자가 값을 선택하려고하는 텍스트를 통해 사업부를 만드는 것입니다을 사용자가 선택한 내부 (강조 표시되는 것처럼 보입니다). 선택이 완료되면이 div를 문제없이 드래그 할 수 있습니다.

내 코드 selectionStart()는 기본적으로 마우스가있는 위치의 X 위치 (및 DIV 요소를 그리기위한 Y 위치)를 설정합니다.

내 코드 selectionEnd()는 최종 X 및 Y 위치를 가져오고 innerHTML의 하위 문자열을 수행합니다.

아이디어는 단일 문자 너비를 얻고 그걸 계속하는 것입니다 - 실현 가능한 방법입니까?

업데이트 :
이제 정확한 문자 선택을 얻을 수 있습니다. 이제는 선택한 영역에 대해 div (불투명도/투명도 포함)를 작성해야합니다.

function selectionStart() 
    { 
     if (characterWidth == 0) 
     { 
      widthCalc = document.getElementById("text"); 
      var storedValue = widthCalc.innerText; 
      widthCalc.innerText = 'X'; 
      var range = document.body.createTextRange(); 
      range.moveToElementText(widthCalc); 
      range.select(); 
      var caretPos = document.selection.createRange(); 
      caretPos.select(); 
      caretPos.findText("X"); 
      characterWidth = caretPos.boundingWidth; 
      widthCalc.innerText = storedValue;  
     } 
     startPositionX = Math.round((mouseX(event)+5)/characterWidth); 
     startPositionY = mouseY(event); 
    } 

    function selectionEnd() 
    { 
     endPositionX = Math.round((mouseX(event)+5)/characterWidth); 
     endPositionY = mouseY(event); 
     var myRulerText = document.getElementById("text"); 
     newSquare = document.createElement('div'); 
     newSquare.setAttribute('id', 'newSquare') 
     newSquare.innerText = myRulerText.innerText; 

     if ((startPositionX - endPositionX) > 0) 
     { 
      transferBox = startPositionX; 
      startPositionX = endPositionX; 
      endPositionX = transferBox; 
     } 

     newSquare.innerText = newSquare.innerText.substring(startPositionX-2,endPositionX-1); 
     newSquare.style.left = 50; 
     newSquare.style.top = 100; 
     alert(newSquare.innerText); 
    } 
+1

안녕을 선택하는 큰 Tut을 - 당신은 당신이 jQuery를 태그를 제거해야합니다이 질문에 내림차순 천의 jQuery 광신자을하지 않으려면. jQuery 솔루션을 찾고 있다면 (또는 두 가지 방법을 신경 쓰지 마라.) 질문에 그렇게 대답해라. :-) – calumbrodie

+0

지금 jQuery를 제거하는 것이 좋습니다. –

답변

0
+0

튜토리얼을 주셔서 감사합니다.하지만 Internet Explorer는 전체 단어를 자동 선택하여 사용자를 돕기 때문에 사용할 수없는 기본 텍스트 선택을 사용하고 있습니다. –