我的问题与 textarea中的自动换行 几乎相似,但我的上下文更加复杂。我有多个文本区域,它们具有1行属性,因此给人们留下了在空气中写作的印象(只是网站上没有边框的空白区域,因为我已经在CSS中设置了文本区域边框为 >>> border: 0; )。
我想使用JQuery或Javascript来计算用户输入的文本是否已到达文本区域行的末尾,以便自动移动到下面的下一个文本区域。解决这个问题的一种方法是尝试计算字符数,但不同的字符具有不同的宽度。
我考虑在文本区域的边缘插入一个隐藏元素,作为 nexttextarea.focus()事件的触发器,但我不知道如何实现这一点。
我尝试过各种hack方法,但只有一种方法似乎是解决方案...尝试将每个字符存储在数组中,并为它们赋予默认的像素空间值,如'a'=>0.7px,'b'=>0.9px之类的东西,如果有列表的话(尽管看起来会在存储大写、小写字母和许多其他字符方面占用大量内存)。然后根据浏览器的宽度进行一些计算,如果已经调整了大小,则确定当浏览器宽度边缘处的文本区域行宽度变满时。 (目前,文本区域宽度为100%,没有父级,因此填充整个浏览器宽度)。
如果有人知道我可以完成这个复杂或简单的方法,请帮助我。一个大问题是,如果调整浏览器窗口大小,IE和Mozilla会引入滚动条,而滚动条是我永远不想让用户看到的(记住在空气中输入的印象)。
对不起,我说得太详细了...只是想保持准确和详细。
我想使用JQuery或Javascript来计算用户输入的文本是否已到达文本区域行的末尾,以便自动移动到下面的下一个文本区域。解决这个问题的一种方法是尝试计算字符数,但不同的字符具有不同的宽度。
我考虑在文本区域的边缘插入一个隐藏元素,作为 nexttextarea.focus()事件的触发器,但我不知道如何实现这一点。
我尝试过各种hack方法,但只有一种方法似乎是解决方案...尝试将每个字符存储在数组中,并为它们赋予默认的像素空间值,如'a'=>0.7px,'b'=>0.9px之类的东西,如果有列表的话(尽管看起来会在存储大写、小写字母和许多其他字符方面占用大量内存)。然后根据浏览器的宽度进行一些计算,如果已经调整了大小,则确定当浏览器宽度边缘处的文本区域行宽度变满时。 (目前,文本区域宽度为100%,没有父级,因此填充整个浏览器宽度)。
如果有人知道我可以完成这个复杂或简单的方法,请帮助我。一个大问题是,如果调整浏览器窗口大小,IE和Mozilla会引入滚动条,而滚动条是我永远不想让用户看到的(记住在空气中输入的印象)。
对不起,我说得太详细了...只是想保持准确和详细。
height: 1em;
对我在 Firefox 中解决了这个问题:http://jsfiddle.net/L73RG/2/ 基本上的想法是,如果文本溢出可见的文本区域,那么文本区域将滚动。只要文本区域被滚动,就从中删除字符并将它们添加到下一个文本区域的开头。 - Dagg Nabbit