2012-11-30 17 views
9

में टेक्स्ट की रेखा का चयन कैसे करें मेरे पास एक टेक्स्टरेरा है जिसका उपयोग पार्सिंग के लिए बड़े पैमाने पर SQL स्क्रिप्ट को पकड़ने के लिए किया जाता है। जब उपयोगकर्ता "पार्स" बटन पर क्लिक करता है, तो उन्हें SQL स्क्रिप्ट पर सारांश जानकारी मिलती है।टेक्स्टरेरा

मैं सारांश जानकारी क्लिक करने योग्य होना चाहता हूं ताकि जब इसे क्लिक किया जाए, तो SQL स्क्रिप्ट की रेखा टेक्स्टरेरा में हाइलाइट की गई है।

मेरे पास पहले से ही आउटपुट में लाइन नंबर है इसलिए मुझे केवल जावास्क्रिप्ट या jquery की ज़रूरत है जो यह बताती है कि टेक्स्टरेरा की कौन सी पंक्ति हाइलाइट करने के लिए है।

क्या कुछ प्रकार का "goToLine" फ़ंक्शन है? मेरी सारी खोज में, मैं जो कुछ भी ढूंढ रहा हूं उसे काफी कुछ नहीं बताता है।

+0

वैसे, सब कुछ एक ही पृष्ठ पर निहित है। नहीं 'सबमिशन' या कुछ भी। – Ben

+2

यहां शुरू करें http://stackoverflow.com/questions/646611/programmatically-selecting-partial-text-in-an-input-field या यहां http://stackoverflow.com/questions/1712417/jquery-wrap- चयनित -टेक्स्ट-इन-ए-टेक्स्टरेरा तो आपको यह पता लगाने की आवश्यकता है कि आपका पार्स बटन (कोई कोड प्रदान नहीं किया गया) जानता है कि चयन – Popnoodles

उत्तर

20

इस समारोह की उम्मीद पहले पैरामीटर लाइन नंबर होने के लिए अपने पाठ क्षेत्र और दूसरा पैरामीटर के संदर्भ में होने की

function selectTextareaLine(tarea,lineNum) { 
    lineNum--; // array starts at 0 
    var lines = tarea.value.split("\n"); 

    // calculate start/end 
    var startPos = 0, endPos = tarea.value.length; 
    for(var x = 0; x < lines.length; x++) { 
     if(x == lineNum) { 
      break; 
     } 
     startPos += (lines[x].length+1); 

    } 

    var endPos = lines[lineNum].length+startPos; 

    // do selection 
    // Chrome/Firefox 

    if(typeof(tarea.selectionStart) != "undefined") { 
     tarea.focus(); 
     tarea.selectionStart = startPos; 
     tarea.selectionEnd = endPos; 
     return true; 
    } 

    // IE 
    if (document.selection && document.selection.createRange) { 
     tarea.focus(); 
     tarea.select(); 
     var range = document.selection.createRange(); 
     range.collapse(true); 
     range.moveEnd("character", endPos); 
     range.moveStart("character", startPos); 
     range.select(); 
     return true; 
    } 

    return false; 
} 

उपयोग:

var tarea = document.getElementById('myTextarea'); 
selectTextareaLine(tarea,3); // selects line 3 

कार्य उदाहरण:

http://jsfiddle.net/5enfp/

+0

होना चाहिए जो शानदार शानदार है। आपको बहुत - बहुत धन्यवाद! – Ben

+0

यदि किसी कारण से आपको किसी भी चयन को अचयनित करने की आवश्यकता है: 'window.getSelection()। RemoveAllRanges()' –

-1

टेक्स्टरेरा में पाठ की रेखा का चयन कैसे करें विशेष रेखा पर vascript डबल क्लिक करें।

//This function expects first parameter to be reference to your textarea. 
function ondblClickSelection(textarea){ 
    var startPos = 0; 
    var lineNumber = 0; 
    var content = ""; 
    if(typeof textarea.selectionStart == 'undefined') { 
     return false; 
    } 
    startPos = textarea.selectionStart; 
    endPos = textarea.value.length; 
    lineNumber = textarea.value.substr(0,startPos).split("\n").length - 1; 
    content = textarea.value.split("\n")[lineNumber]; 
    var lines = textarea.value.split("\n"); 
    var endPos = lines[lineNumber].length+startPos; 
    textarea.selectionStart = startPos; 
    textarea.selectionEnd = endPos; 
    return true; 
} 
1

अंधेरे द्वारा पोस्ट में कोड सही ढंग से काम नहीं करता है। इसके आधार पर मैंने कोड छोटा कर दिया और इसे काम किया।



    function onClickSelection(textarea){ 
     if(typeof textarea.selectionStart=='undefined'){ 
      return false; 
     } 
     var startPos=(textarea.value.substring(0,textarea.selectionStart).lastIndexOf("\n")>=0)?textarea.value.substring(0,textarea.selectionStart).lastIndexOf("\n"):0; 
     var endPos=(textarea.value.substring(textarea.selectionEnd,textarea.value.length).indexOf("\n")>=0)?textarea.selectionEnd+textarea.value.substring(textarea.selectionEnd,textarea.value.length).indexOf("\n"):textarea.value.length; 
     textarea.selectionStart=startPos; 
     textarea.selectionEnd=endPos; 
     return true; 
    } 

+1

आपकी स्टार्टपोस ने पिछली पंक्ति से \ n वर्ण भी चुना है, इसमें +1 जोड़ने से नौकरी तय की गई है (textarea। value.substring (0, textarea.selectionStart) .lastIndexOf ("\ n")> = 0)? textarea.value.substring (0, textarea.selectionStart) .lastIndexOf ("\ n") + 1: 0; ' – Gabriel