问题描述
我有一个问题,我需要弄清楚如何分割在文本区域中输入的文本,但是在键入时只是视觉上的排序,我将对其进行详细说明。
这是输入的样子
1- sample text 1.
2- sample text 2.
3- sample text 3.
这是用户在文本框中键入它的方式,但是当我显示它时,它看起来像这样(请注意,并非所有用户都以点结尾)
1- sample text 1. 2- sample text 2. 3- sample text 3.
我如何将它们视觉上分开并将其显示为列表?我尝试了replace,mid和其他功能,但没有用,谢谢。
解决方法
如果您只是想显示它像键入时一样,没有太多麻烦,可以在一行代码中使用replace()
:
replace(inputFieldString,vbCrlf,'<br>')
我们的某些较旧的系统将这种方法用于文本区域输入的内容。快速简便。
,相反,尝试此操作,在换行符处分割文本并在数组上循环以创建列表:
function addText() {
let list = document.querySelector('#list');
let text = document.querySelector('#text').value;
let values = text.split('\n');
let listFragment = new DocumentFragment();
values.forEach(value => {
let span = document.createElement('span');
span.textContent = value + ' ';
listFragment.append(span);
});
list.append(listFragment);
}
<textarea id="text"></textarea>
<button onClick="addText()">enter</button>
<div id="list"></div>
,
由于HTML会忽略空格,因此您不会看到换行符,但是可以通过查看浏览器页面源代码来确认换行符是否存在。
例如,如果要获取文本并将其输出为无序列表(<ul>
),则可以执行以下操作;
<%
Option Explicit
'Starting point for the script.
Call init_page()
Sub init_page()
Dim issubmit: issubmit = (Request.Form.Count > 0)
Dim value: value = Request.Form("sampletext") & ""
Call build_form(value)
If issubmit Then
Call Response.Write(build_list(value))
End If
End Sub
Sub build_form(value)
%>
<form method="POST">
<textarea name="sampletext" rows="5"><%= value %></textarea>
<button>Submit</button>
</form>
<%
End Sub
Function build_list(value)
Dim html,list,item,items
If Len(value) < 1 Then build_list = ""
list = Split(value,vbNewLine)
If IsArray(list) Then
html = "<ul>"
items = UBound(list)
For item = 0 To items
html = html & "<li>" & list(item) & "</li>"
Next
html = html & "</ul>"
Else
html = "Error: List was not in the correct format"
End If
build_list = html
End Function
%>
该示例是一个单页ASP页面脚本,该脚本将表单发布到自身,并使用一个函数来获取发布的文本,使用Split()
将其转换为数组,并使用该数组构建一个无序列表,该列表是写回页面。这绝不是解决方案,它旨在作为培训练习,应该使您对如何在自己的项目中执行此操作有所了解。