2012-01-24 73 views
3

我正在開發基於asp.net的應用程序。我正在使用多行文本框,我在asp.net中使用java腳本。我想要在多行文本框中查找特定字符或文本的行號。我可以使用java腳本從多行文本框中獲取行號嗎?如何使用javascript在多行文本框中獲取行號

+0

我可以給你這個jquery,如果你想 – user1006544

+0

你對java腳本有什麼想法嗎? –

+0

@Praveen:剛剛編輯[我的答案](http://stackoverflow.com/a/8984260/284240)添加一個js-way。 –

回答

1
string[] lines = Textbox1.Text.Split(new string[] { Environment.NewLine }, StringSplitOptions.None); 
int lineNumberOfText = -1; 
for (int lineNumber = 0; lineNumber <= lines.Length - 1; lineNumber++) { 
    if (lines(lineNumber).Contains(textToSearch)) { 
     lineNumberOfText = lineNumber; 
     break; 
    } 
} 

編輯:您只是將標題從ASP.NET更改爲javascript,因此此答案不正確,但可能是h總之,無論如何。

這裏有一個的Javascript功能,你想要做什麼(大小寫insitive搜索選項):

function getLineNumber(id, text, caseSensitive) { 
    var input = document.getElementById(id); 
    if (input != null) { 
     caseSensitive = (caseSensitive == true || caseSensitive == "true") ? true : false; 
     if (!caseSensitive) text = text.toLowerCase(); 
     var lines = input.value.split('\n'); 
     for (var i = 0; i < lines.length; i++) { 
      var line = caseSensitive ? lines[i] : lines[i].toLowerCase(); 
      if (line.indexOf(text) != -1) { 
       return i; 
      } 
     } 
    } 
    return -1; 
} 
+0

好的.....我怎麼把它添加到我的按鈕點擊事件? –

+0

它不工作.....它給出了像undefined這樣的錯誤... etc –

+0

以下將打印出包含「Hello World」(區分大小寫)alert的第一個行號(getLineNumber('Textarea1','Hello World 」,FALSE))' –

1

可以在C#代碼爲此在下列方式

yourInputString 
// Get the text before your particular text 
.Substring(0, yourInputString.IndexOf("ParticularText")) 
// Get all lines 
.Split('\n') 
.Length 

UPDATE:正如您在評論中提到,要做到這一點在JavaScript中,這裏有雲

textBoxName.Value 
// Get the text before your particular text 
.substring(0, textBoxName.Value.indexOf("ParticularText")) 
// Get all lines 
.split('\n') 
.length 
+0

我該如何添加到java腳本? –

+0

你還沒有提到有問題的JavaScript嗎? – Maheep

0

的Praveen,我曾嘗試一些與HTML這裏http://jsfiddle.net/amantur/Uk6td/2/。但它不是傻瓜。因爲如果你連續有50個字符(就像我們在例子中那樣),但是一個單詞長度超過50個字符,它將打破所有的邏輯。另外,如果一個單詞不適合一行,它將移動到下一行和列索引中斷。它會給你粗略的想法,但是在第一行之後的列中會非常錯誤。

相關問題