2011-01-02 4 views
8

단일 왼쪽 클릭에 사업부 내의 모든 텍스트를 선택 : 사용자가 복사 할 수있는 공유 가능한 링크 될 운명 것 alt textI는 다음과 같습니다 사업부 내에서 간단한 클릭 할 수없는 링크가 자바 스크립트

다른 것들에 붙여 넣기. 사용성 목적

, 나는 전체 링크를 선택 어디서나 사업부 내에서 단일 마우스 왼쪽 버튼을 클릭합니다 : alt text

나는, 자바 스크립트/웹 프로그래밍에 대해 잘 모르는을, 그래서 나는 다음을 시도했습니다 :

<div id="share_link" onClick="select_all('share_link')"><%= request.url %></div> 

이 작동하지 않습니다이 자바 스크립트

<script type="text/javascript"> 
    function select_all(id) { 
     document.getElementById(id).focus(); 
    } 
</script> 

. 나는 내가 원하는 것을 성취하기 위해해야 ​​할 가장 단순한 일이 무엇인지 알고 싶습니다. div를 텍스트 입력 또는 링크 내 텍스트로 변경하려고 생각했지만 내용이 읽기 전용, 편집 불가능 및 클릭 가능하지 않는 것이 이상적입니다.

+1

가능한 중복 : http://stackoverflow.com/questions/985272/jquery-selecting-text-in-an-element-akin-to-highlighting-with- 마우스 – Damiqib

답변

6

jQuery를 사용할 수 있습니다. 입력 필드 : 당신은 그것을가 HTML에서 읽기 전용 속성을 사용하여 입력 필드가 있다는 사실을 마스크 수

$("#myInputField").focus(function(){ 
    // Select input field contents 
    this.select(); 
}); 

:

<input type="text" name="country" value="Norway" 
    readonly="readonly" /> 

그리고 그것은을 암시하지 않도록 커서를 변경하는 CSS를 사용 텍스트 입력 :

cursor: crosshair; 
+4

작동하지 않습니다. 문제는 포커스 이벤트를 바인딩한다는 것입니다. 결과적으로 (어떤 이유로) 선택 사항이 유지되지 않습니다. 그러나 클릭 이벤트를 바인딩하면 효과가 있습니다. –

17

이것은 IE에서 다른 브라우저와 완전히 다른 방식으로 이루어집니다. 다음은 모든 주요 브라우저에서 작동합니다 :

<script type="text/javascript"> 
    function select_all(el) { 
     if (typeof window.getSelection != "undefined" && typeof document.createRange != "undefined") { 
      var range = document.createRange(); 
      range.selectNodeContents(el); 
      var sel = window.getSelection(); 
      sel.removeAllRanges(); 
      sel.addRange(range); 
     } else if (typeof document.selection != "undefined" && typeof document.body.createTextRange != "undefined") { 
      var textRange = document.body.createTextRange(); 
      textRange.moveToElementText(el); 
      textRange.select(); 
     } 
    } 
</script> 

<div onclick="select_all(this)">Link text</div> 
+0

나는 이것을 테스트했으며 제대로 작동하는 것 같습니다. 그러나 나는 가독성과 compactness를 위해 Sime의 대답으로 아래로 끝났다. 고맙습니다. – tstyle

+0

충분하다면, Šime 's가 아마도 가장 좋은 해결책 일 것입니다. –

+1

div에 텍스트를 선택하는 것이 가장 적합한 질문이기 때문에 Tim에게 투표하고 있습니다. 읽기 전용 상태의 입력이 아닙니다. 좋은 대답에 감사드립니다. –

관련 문제