相关疑难解决方法(0)

Textarea根据内容长度调整大小

我需要一个textarea,我在框中键入我的文本,它根据需要增长,以避免处理滚动条,它需要在删除文本后收缩!我不想沿着mootools或jquery路线走,因为我有一个轻量级的形式.

javascript

109
推荐指数
5
解决办法
21万
查看次数

Internet Explorer 11自动换行不起作用

在IE 11中,自动换行不再适用于textarea元素.在IE 10及更早版本中,FF,Safari和Chrome自动换行按预期工作.

IE 11没有实现任何自动换行.我尝试在textarea标签中添加"wrap = hard",并添加"word-wrap:normal;" 到CSS.

还有其他人遇到过这个问题吗?如果是这样,你找到了解决方案.Windows正在推出此更新,并且不一致的行为正在成为一个问题.

感谢您的任何帮助,您可以提供.

这是我当前的textarea标签

<textarea class="wrklst-report_text" id="report_text_6586427" name="report_text[6586427]" title="Report Box" data-exam_seq="6586427" style="width:95%;"></textarea>
Run Code Online (Sandbox Code Playgroud)

这是我的计算CSS

-webkit-appearance: textarea;
-webkit-rtl-ordering: logical;
-webkit-user-select: text;
-webkit-writing-mode: horizontal-tb;
background-color: rgb(255, 255, 255);
border-bottom-color: rgb(0, 0, 0);
border-bottom-style: solid;
border-bottom-width: 1px;
border-image-outset: 0px;
border-image-repeat: stretch;
border-image-slice: 100%;
border-image-source: none;
border-image-width: 1;
border-left-color: rgb(0, 0, 0);
border-left-style: solid;
border-left-width: 1px;
border-right-color: rgb(0, 0, 0);
border-right-style: solid;
border-right-width: 1px;
border-top-color: rgb(0, 0, 0);
border-top-style: solid;
border-top-width: 1px;
color: rgb(0, 0, 0);
cursor: auto; …
Run Code Online (Sandbox Code Playgroud)

html css internet-explorer

45
推荐指数
4
解决办法
7万
查看次数

如何为 HTML 文本区域添加自动缩进?

我有 HTML 文本区域。我想修改它,使其实现自动缩进,即插入NEWLINE后,我想在新行的开头自动插入空格(空格的数量取决于上一行的缩进)。我发现,我可以通过注册一个监听“按键”事件的处理程序来做到这一点。现在我有一个选择:(a) 保留默认处理程序并在浏览器向 textarea.value 添加换行符后插入空格,或者 (b) 使用 PreventDefault() 并自行插入整个内容(即换行符和空格)。

在情况 (a) 中,如下面的代码所示,我的处理程序在浏览器添加换行符之前执行,因此空格(或用于说明的“--”)最终出现在该行的末尾,而不是在该行的开头新的一个。

在情况 (b) 中,如下面代码中的注释所示,文本被正确修改,但如果它导致光标移出文本区域视图,则内容不会滚动(很可能是因为内容滚动是默认处理的一部分) ),因此光标消失在文本区域边界后面,并且仅当我发送另一个击键(即不是换行符)时才会重新出现。

如何实现自动缩进效果而又不丢失默认滚动效果?

我知道这种效果可能可以通过延迟插入空格(例如使用 setTimeout())来近似,以便运行时有足够的时间来完成默认处理(即插入换行符和垂直滚动),但看起来像对我来说,这是一个巨大的混乱,并且引入了竞争条件,我担心它会在最意想不到的情况下(大量复制粘贴、由于其他操作而导致运行速度缓慢、高键盘重复率等)对我造成打击。理想情况下,我希望 (i) 在默认处理之后调用我的代码,或者 (ii) 能够阻止默认处理、运行我的代码并显式调用默认处理。如何实现?

谢谢!

格雷格

PS:我对集成复杂的文本区域替换不感兴趣,例如Editarea(我使用一个,它在浏览器中非常脆弱)。

在 FF3 上测试。

<html>
  <head>
    <script type="text/javascript">
      function onKeyPressHandler(e) {
      if (e.which == 13) // ASCII newline
          {
              var start = this.selectionStart;
              var end = this.selectionEnd;
              var v = this.value;
              this.value = v.slice(0, start) + '--' + v.slice(end); // (a)

              // (b): this.value = v.slice(0, start) + '\n--' + v.slice(end);
              // (b): e.preventDefault(); …
Run Code Online (Sandbox Code Playgroud)

javascript textarea indentation

5
推荐指数
1
解决办法
4965
查看次数