2012-09-23 24 views
23

thể trùng lặp:
Find out the 'line' (row) number of the cursor in a textareaBắt Dòng Số Trong Tiêu Diện tích

Tôi muốn tìm hiểu số dòng mà con trỏ của người dùng ở trên trong một phần tử HTML textarea.

Điều này có thể sử dụng javascript và jquery không?

+1

Xác định dòng trong một textarea. Nó có bao gồm văn bản được bao bọc hay bạn chỉ muốn xem xét các dòng mới? – zeebonk

+0

Tôi muốn đặt giới hạn 15 ký tự trong một dòng và người dùng sẽ không thể nhập hơn 75 ký tự trong 5 dòng – Freelancer

+0

câu hỏi thú vị thực sự :) Thích và Đánh dấu;) – Marwan

Trả lời

20

Điều này hoạt động với nhấp chuột vào nút. Bị đánh cắp từ Find out the 'line' (row) number of the cursor in a textarea

​function getline() 
{ 
    var t = $("#t")[0]; 
    alert(t.value.substr(0, t.selectionStart).split("\n").length); 
}​ 

HTML

​<textarea rows="6" id="t"> 
there is no 
love in the ghetto 
so come here 
and get it 
</textarea> 
<input type="button" onclick="getline()" value="get line" />​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​ 
+3

Điều này không tính đến các dấu ngắt dòng do gói từ. –

+4

@RobW: Tôi không nghĩ rằng OP cần rằng – Bergi

+0

Nó làm việc cho tôi ... của nó hữu ích – Freelancer

1

Bạn có thể sử dụng các phương pháp sau đây

  1. Find the caret positio n (index).
  2. Tìm chuỗi con từ vị trí 0 đến chỉ số
  3. Tìm kiếm số dòng mới trong chuỗi thu được ở bước 2.

// Kiểm tra

$(function() { 
    $('#test').keyup(function() { 
     var pos = 0; 
     if (this.selectionStart) { 
      pos = this.selectionStart; 
     } else if (document.selection) { 
      this.focus(); 

      var r = document.selection.createRange(); 
      if (r == null) { 
       pos = 0; 
      } else { 

       var re = this.createTextRange(), 
       rc = re.duplicate(); 
       re.moveToBookmark(r.getBookmark()); 
       rc.setEndPoint('EndToStart', re); 

       pos = rc.text.length; 
      } 
     } 
     $('#c').html(this.value.substr(0, pos).split("\n").length); 
    }); 
}); 
​ 

Dưới đây là một ví dụ làm việc http://jsfiddle.net/S2yn3/1/

+0

Điều gì về các đường gây ra bởi ngắt dòng? –

+0

Ý bạn là wordwrap? –

+0

Có, ngắt dòng gây ra bởi wordwrapping ... –

1

Điều này có thể được chia thành ba bước:

Tôi đoán bạn không muốn xem xét văn bản được bao bọc và nội dung được cuộn. Giả sử bạn sử dụng hàm từ this answer, nó sẽ giống như:

var el = document.getElementById("inputarea"); // or something 

var pos = getCaret(el), 
    before = el.value.substr(0, pos), 
    lines = before.split(/\r?\n/); 
return lines.length; 
Các vấn đề liên quan