2011-01-02 31 views
8

tôi có một liên kết không nhấp được đơn giản trong một div trông như thế này: alt textchọn tất cả văn bản trong một div trên một nhấp chuột trái duy nhất với javascript

Nó có nghĩa là một liên kết thể chia sẻ rằng người dùng có thể sao chép dán vào những thứ khác.

Đối với mục đích khả năng sử dụng, tôi muốn có một nhấp chuột duy nhất trái bất cứ nơi nào trong div để chọn toàn bộ liên kết: alt text

Tôi không biết nhiều về, javascript/lập trình web, vì vậy tôi đã thử những điều sau đây :

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

và javascript

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

này không hoạt động. Tôi muốn biết điều đơn giản nhất tôi nên làm để đạt được những gì tôi muốn. Tôi nghĩ về việc thay đổi div thành đầu vào văn bản hoặc văn bản bên trong là một liên kết, nhưng lý tưởng là nội dung bên trong phải là chỉ đọc, không thể chỉnh sửa và không thể nhấp được

+1

có thể trùng lặp: http://stackoverflow.com/questions/985272/jquery-selecting-text-in-an-element-akin-to-highlighting-with- chuột của bạn – Damiqib

Trả lời

6

Bạn có thể sử dụng jQuery cho lĩnh vực đầu vào:

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

Bạn có thể che giấu một thực tế rằng nó là một lĩnh vực đầu vào sử dụng thuộc tính readonly trong html:

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

Và sử dụng CSS để thay đổi con trỏ vì vậy nó sẽ không gợi ý một nhập văn bản, ví dụ như:

cursor: crosshair; 
+4

Nó không hoạt động. Vấn đề là bạn ràng buộc sự kiện trọng tâm. Kết quả là (vì một lý do nào đó) lựa chọn không tồn tại. Tuy nhiên, việc liên kết sự kiện nhấp chuột sẽ không hoạt động. –

17

Điều này đạt được hoàn toàn khác trong IE so với các trình duyệt khác. Sau đây sẽ làm việc trong tất cả các trình duyệt chính:

<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

Tôi đã thử nghiệm điều này và có vẻ như nó hoạt động. Nhưng tôi đã kết thúc với câu trả lời của Sime dưới đây để dễ đọc và nhỏ gọn. Cảm ơn bạn. – tstyle

+0

Đủ công bằng, Šime's có lẽ là giải pháp tốt nhất. –

+1

Tôi đang bỏ phiếu cho bạn Tim vì nó phù hợp nhất với câu hỏi đã chọn văn bản trong div, không phải là đầu vào có trạng thái chỉ đọc. Cảm ơn bạn vì câu trả lời hay. –

Các vấn đề liên quan