如何使用javascript在多行文本框中获取行号

时间:2012-01-24 08:58:07

标签: javascript asp.net asp.net-mvc-3 javascript-events

我正在开发基于asp.net的应用程序。我正在使用多行文本框,我在asp.net中使用java脚本。我想在多行文本框中找到特定字符或文本的行号。我可以使用java脚本从多行文本框中获取行号吗?

3 个答案:

答案 0 :(得分:1)

您可以在C#代码中以下列方式执行此操作

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

更新正如您在评论中提到的,您想在javascript中执行此操作,此处

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

答案 1 :(得分: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,因此这个答案不正确,但无论如何都可能有用。

这是一个 Javascript 功能,它可以满足您的需求(使用大小写搜索选项):

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;
}

答案 2 :(得分:0)

Praveen,我在HTMLhttp://jsfiddle.net/amantur/Uk6td/2/试了一下。但这不是万无一失的。因为如果你连续有50个字符(就像我们在例子中那样),但是一个单词的长度超过50个字符,它将破坏所有逻辑。此外,如果一个单词不适合一行,它将被移动到下一行和列索引中断。它会给你关于行的粗略想法,但在第一行之后的列的情况下非常错误。