首页 web前端 js教程 关于textarea的直观换行的一些研究材料_javascript技巧

关于textarea的直观换行的一些研究材料_javascript技巧

May 16, 2016 pm 07:25 PM
textarea 换行

前两天研究了一下textarea的直观行的换行规律,挺复杂啊:

直观行怎样取不光要看cols大小,还要看网页编码方式。
cols="30"的textarea,实际上每行可以容纳29个半角字符,多少个全角字符就不一定了,与网页编码方式有关。
在IE6.0实测的情况,直观行的换行发生在红字处(红字折到下一行)。

dddddddddddd米ddddddddddddddddddddd //全角后面的连续半角内容被当成一个完整单词处理,如果剩下的位置容不下单词的长度了,就要换行,此为特殊规律A

网页按Unicode编码(“运行代码”的弹出页面即按此编码,JS生成的页面均按此编码)时的一般规律是

(“占满”是说后面无论再跟全角、半角字符,都得换行)

123456789012345678901234567890 //29半角占满
一二三四五六七八九十一二三四五六七八九十 //17全角占满
一二三四五六七八九十一二三四五六七0八九十
一二三四五六七八九十一二三四五六0七八九十 
0一二三四五六七八九十一二三四五六1七八九十 //16全角,1半角占满
0一二三四五六七八九十一二三四五六七八九十
0一二三四五六七八九十一二三四五1六七八九十 //15全角,2半角后不可容全角
01一二三四五六七八九十一二三四五六七八九十
01一二三四五六七八九十一二三四五2六七八九十 //15全角,2半角后可再容1半角(多于1半角时按特殊规律A)
012一二三四五六七八九十一二三四五六七八九十 //15全角,3半角占满
012一二三四五六七八九十一二三四五3六七八九十
0123一二三四五六七八九十一二三四五六七八九十 //14全角,4半角后不可容全角
0123一二三四五六七八九十一二三四4五六七八九十 //14全角,4半角后可再容1半角(多于1半角时按特殊规律A)
01234一二三四五六七八九十一二三四五六七八九十 //14全角,5半角占满
01234一二三四五六七八九十一二三四5五六七八九十
012345一二三四五六七八九十一二三四五六七八九十 //13全角,6半角后不可容全角
012345一二三四五六七八九十一二三6四五六七八九十 //13全角,6半角后可容1半角(多于1半角时按特殊规律A)
0123456一二三四五六七八九十一二三四五六七八九十 //13全角,7半角占满
0123456一二三四五六七八九十一二三7四五六七八九十
01234567一二三四五六七八九十一二三四五六七八九十 //12全角,8半角占满
01234567一二三四五六七八九十一二8三四五六七八九十
012345678一二三四五六七八九十一二三四五六七八九十 //11全角,9半角后不可容全角
012345678一二三四五六七八九十一9二三四五六七八九十 //11全角,9半角后可再容1半角(多于1半角时按特殊规律A)
0123456789一二三四五六七八九十一二三四五六七八九十 //11全角,10半角占满

……

0一二三四五六七八九十一二三四五12六七八九十 //15全角,1半角后可再容2半角连续字符(多于2半角时按特殊规律A),此条可由15全角,3半角占满得出

……

0一二三四五六七八九十一二三四1234五六七八九十 //14全角,1半角后可再容4半角连续字符(多于4半角时按特殊规律A),此条可由14全角,5半角占满得出

……

01一二三四五六七八九十一二三四234五六七八九十 //14全角,2半角后可再容3半角连续字符(多于3半角时按特殊规律A),此条可由14全角,5半角占满得出

……
换行位置不仅与换行位置之前的整行文字有关,还与红字有关(往往全角文字是因为无法在上行末尾挤下才被折到下一行的)。

总结一下就有:


CODE:[Copy to clipboard]x全角,y半角占满 = x全角,y-1半角后不可容全角 = x全角,y-n半角后可再容n半角连续字符(多于n半角时按特殊规律A)。
所以做实验搞清楚所有“占满”的情形就可以了。

现将cols=30,网页按Unicode编码时的“占满”情况列出:

17全角
16全角,1半角
15全角,3半角
14全角,5半角
13全角,7半角
12全角,8半角
11全角,10半角
10全角,12半角
9全角,13半角
8全角,15半角
7全角,17半角
6全角,19半角
5全角,21半角
4全角,22半角
3全角,24半角
2全角,26半角
1全角,28半角
29半角

利用濒于发生按特殊规律A换行的情形,很容易测出所有“占满”的情形:
例如,一二三四五六七八九十012345678912一二三四五六七八九十 //10全角,12半角占满
一二三四五六七八九十0123456789123一二三四五六七八九十 //红字处按特殊规律A换行,蓝字处按9全角,13半角占满换行

cols=30,网页按GB2312编码时,“占满”规律不同了:

14全角,1半角
13全角,3半角
12全角,5半角
11全角,7半角
10全角,9半角
9全角,11半角
8全角,13半角
7全角,15半角
6全角,17半角
5全角,19半角
4全角,21半角
3全角,23半角
2全角,25半角
1全角,27半角
29半角

这样的话,要根据网页的编码方式和cols,通过实验具体才能测出“占满”规律。

从textarea内容的开头起计算全角和半角字符的数目,根据“占满”规律及特殊规律A决定第一个直观换行的位置,再从第二行(包括物理行和直观行)起计算全角和半角字符的数目,根据“占满”规律及特殊规律A决定第二个直观换行的位置……如是继续下去,直到textarea内容的末尾。这样就可以得到所有的换行位置了。

当然实际应用时没必要也没可能这样做实验啦,比如说选中textarea的第X行到第Y行,还没了解官方的办法是怎样的,我是这么办的:


[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]


04 年初写的东西,应该是目前研究比较全面的了吧??
  Current Position : Physical Row: Physical Column: Visible Row: Visible Column: Error Message:
CreateRange CreateTextRange
CreateRange.getClientRects() CreateTextRange.getClientRects()
CreateRange.getBoundingClientRect() CreateTextRange.getBoundingClientRect()

[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]

根据被某网站匿名转载的页面( http://dl.pconline.com.cn/html_2/4/545/id=38457&pn=0.html )上的网友留言,上面的《JS实现文本域的任意行选定》示例代码有一处bug:即在滚动条不在顶端的情况下运行示例代码会出错。现已修正:只增加了一行代码


CODE:
src.scrollTop=0 //确保开始数行数时滚动条位于顶部

[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

仓库:如何复兴队友
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
4 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

excel表格要怎么换行 excel表格要怎么换行 Feb 09, 2024 pm 02:00 PM

Excel在是使用的过程中我们要进行很多不一样的操作,有的时候需要在一个单元格内换行,那么想要换行具体要怎么操作呢?下面就来看一下电脑excel表格换行方法吧。【excel表格操作方法合集】excel表格要怎么换行答案:可以通过自动换行和设置单元格格式进行操作。一、自动换行1、我们在表格中选择需要进行换行的区域之后在【开始】页面中点击【自动换行】;2、然后我们在调整A列宽度为合适值就可以了;二、设置单元格格式1、首先我们选择需要进行换行的区域之后右击鼠标,点击【设置单元格格式】;2、然后在弹出的

BarTender中如何换行-BarTender中换行的方法 BarTender中如何换行-BarTender中换行的方法 Mar 05, 2024 pm 07:52 PM

很多用户在办公中都会使用BarTender软件,最近一些新用户询问BarTender中如何换行?下文小编就为各位带来了BarTender中换行的方法,让我们一同来下文看看吧。1、在BarTender中,单击工具栏中的创建文本按钮,选择创建单行文本,输入文本内容。2、双击创建的文本对象,打开文本属性对话框。切换至“文本格式”选项卡,将右侧的“类型”勾选为“段落”。3、单击关闭,调整文本框大小或输入更多文字,或根据实际要求换行都可以。

在苹果电脑上如何实现Excel单元格换行 在苹果电脑上如何实现Excel单元格换行 Feb 18, 2024 pm 08:39 PM

苹果电脑Excel单元格内换行苹果电脑的Excel软件是一款强大的电子表格工具,它提供了许多方便的功能,以帮助用户进行数据处理和分析。在使用Excel时,有时我们需要在单元格内输入多行文本,以便更好地组织和呈现数据。然而,由于苹果电脑的Excel与Windows版本的Excel略有不同,因此换行的方法也有所不同。在Windows版本的Excel中,我们可以直

苹果手机怎么换行 苹果手机设置换行的操作步骤 苹果手机怎么换行 苹果手机设置换行的操作步骤 Mar 22, 2024 pm 06:50 PM

1、多次按空格键,将光标移动到最右边处,再输入文字就可以实现换行了。2、需要换行时点击键盘上的话筒图标,语音说【换行】。3、备忘录使用场景中,输入法中有【换行】选项,可通过复制的方式实现换行。4、在appstore中下载其他第三方输入法使用。

PyCharm教程:快速掌握自动换行功能 PyCharm教程:快速掌握自动换行功能 Feb 23, 2024 am 08:33 AM

PyCharm是一款功能强大的Python集成开发环境,其自动换行功能可以帮助开发者更加高效地编写代码。本文将介绍如何快速掌握PyCharm中的自动换行功能,并提供具体的代码示例。一、启用自动换行功能在PyCharm中,默认情况下是不启用自动换行功能的,需要手动设置才能使用。具体的操作步骤如下:打开PyCharm,进入File->Settings;

PHP替换换行的方法详解 PHP替换换行的方法详解 Mar 20, 2024 pm 01:21 PM

PHP替换换行的方法详解在PHP开发中,有时候我们需要对字符串中的换行符进行替换或处理。换行符在不同平台下可能会有不同的表示方式,因此需要对其进行统一处理,以确保字符串在不同环境下的显示效果一致。本文将详细介绍PHP中替换换行的方法,包括常见的换行符和具体的代码示例。一、常见的换行符在不同操作系统中,换行符的表示方式可能略有不同。主要的换行符包括:Windo

Go语言中如何输出带有换行符的文本 Go语言中如何输出带有换行符的文本 Mar 15, 2024 pm 04:15 PM

Go语言是一种现代化、高效且简洁的编程语言,广泛应用于各种领域的软件开发中。在Go语言中,输出带有换行符的文本非常简单,可以通过使用fmt包提供的Println函数实现。下面我们将具体介绍如何在Go语言中输出带有换行符的文本,以及相关的代码示例。在Go语言中,想要输出带有换行符的文本,可以使用fmt包提供的Println函数。Println函数会在输出文本的

如何交换Excel中列的顺序 如何交换Excel中列的顺序 Feb 20, 2024 am 10:28 AM

excel是一款功能强大的电子表格软件,可以帮助我们处理各种数据和信息。在使用excel时,有时候我们需要调整表格的布局,包括换行和列顺序。下面,我将为大家详细介绍excel怎样换行和调整列的顺序。一、换行1.使用换行符:在excel中,我们可以使用换行符来实现换行。具体操作如下:a.选中需要进行换行的单元格或单元格区域。b.在选中的单元格中输入想要换行的

See all articles