我有一個textarea用於保存大量的SQL腳本進行解析。當用戶點擊「解析」按鈕時,他們會獲得有關SQL腳本的摘要信息。如何選擇textarea中的文本行
我想要點擊摘要信息,以便點擊時,SQL腳本的行在textarea中突出顯示。
我已經在輸出行號,所以我需要的是JavaScript或jQuery,告訴它突出顯示textarea的哪一行。
是否有某種「goToLine」的功能?在我所有的搜索中,沒有什麼東西能夠解決我所尋找的問題。
我有一個textarea用於保存大量的SQL腳本進行解析。當用戶點擊「解析」按鈕時,他們會獲得有關SQL腳本的摘要信息。如何選擇textarea中的文本行
我想要點擊摘要信息,以便點擊時,SQL腳本的行在textarea中突出顯示。
我已經在輸出行號,所以我需要的是JavaScript或jQuery,告訴它突出顯示textarea的哪一行。
是否有某種「goToLine」的功能?在我所有的搜索中,沒有什麼東西能夠解決我所尋找的問題。
此功能預計第一參數是關於你的textarea和第二參數是行號
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
工作實施例:
這太棒了。非常感謝! – Ben
如果由於某種原因,你會發現自己需要取消選擇任何選項:'window.getSelection()。removeAllRanges()' –
如何在textarea ja中選擇文本行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;
}
由darkheir發佈的代碼無法正常工作。基於此,我縮短了代碼並使其工作。
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;
}
你的startPos還選擇了前一行的\ n字符,給它加上+1來修復作業'(textarea。 value.substring(0,textarea.selectionStart).lastIndexOf(「\ n」)> = 0)? textarea.value.substring(0,textarea.selectionStart).lastIndexOf(「\ n」)+ 1:0;' – Gabriel
順便說一句,一切都包含在一個頁面上。沒有「提交」或任何東西。 – Ben
從這裏開始http://stackoverflow.com/questions/646611/programmatically-selecting-partial-text-in-an-input-field或這裏 http://stackoverflow.com/questions/1712417/jquery-wrap-selected -text-in-a-textarea,那麼你需要弄清楚你的解析按鈕(沒有代碼提供)知道選擇應該在哪裏 – Popnoodles