2012-09-23 20 views
23

संभव डुप्लिकेट:
Find out the 'line' (row) number of the cursor in a textareaहो रही पंक्ति संख्या में पाठ क्षेत्र

मैं लाइन नंबर पता लगाना चाहते हैं कि एक HTML textarea तत्व में पर में एक उपयोगकर्ता के कर्सर।

क्या यह जावास्क्रिप्ट और jquery का उपयोग कर संभव है?

+1

एक पाठ क्षेत्र में लाइनों को परिभाषित करें। क्या इसमें लपेटा हुआ टेक्स्ट शामिल है या क्या आप केवल न्यूलाइन पर विचार करना चाहते हैं? – zeebonk

+0

मैं एक पंक्ति में 15 वर्ण सीमा निर्धारित करना चाहता हूं और उपयोगकर्ता 5 लाइनों में 75 से अधिक वर्णों में प्रवेश करने में सक्षम नहीं होना चाहिए – Freelancer

+0

अच्छा सवाल वास्तव में :) पसंद और बुकमार्क;) – Marwan

उत्तर

20

यह बटन क्लिक के साथ काम करता है। से 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); 
}​ 

एचटीएमएल चोरी

​<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

यह शब्द रैपिंग के कारण लाइनब्रैक के लिए जिम्मेदार नहीं है। –

+4

@RobW: मुझे नहीं लगता कि ओपी को – Bergi

+0

की आवश्यकता है यह मेरे लिए काम करता है ... इसका सहायक – Freelancer

1

आप निम्नलिखित दृष्टिकोण

  1. Find the caret positio n (सूचकांक) का उपयोग कर सकते हैं।
  2. सूचकांक करने के लिए स्थिति 0 से सबस्ट्रिंग खोजें
  3. -स्ट्रिंग में नई लाइनों चरण में प्राप्त की संख्या के लिए
  4. खोजें 2.

// टेस्ट

$(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); 
    }); 
}); 
​ 

यहाँ एक काम कर उदाहरण है http://jsfiddle.net/S2yn3/1/

+0

लाइनब्रेक्स के कारण लाइनों के बारे में क्या? –

+0

क्या आपका शब्द वर्डवाप था? –

+0

हां, वर्डव्रपिंग के कारण लाइनब्रैक ... –

1

इसे तीन चरणों में विभाजित किया जा सकता है:

मुझे लगता है कि आप लिपटे हुए पाठ और स्क्रॉल सामग्री पर विचार नहीं करना चाहते हैं। आप this answer से समारोह का उपयोग मानते हुए, यह होगा की तरह:

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; 
संबंधित मुद्दे