【问题标题】:Return key not working within a <textarea>返回键在 <textarea> 中不起作用
【发布时间】:2011-03-25 14:31:47
【问题描述】:

我对在 asp.net 页面上定义的文本区域有疑问。 textarea 在后端填充有直接从 mssql 数据库读取的文本。

<div id="emailForm" runat="server" style="display:inline;">
  <textarea name="Body" id="Body" rows="20" cols="20">
     text in here
  <textarea>
</div>

以下 CSS 应用于 emailForm div:

padding: 5px;
width: 750px;
font-family: Lucida Sans, Verdana, Arial, Helvetica, sans-serif;
font-size: 0.9em;
margin: 0px 0px 10px 0px;
border: 2px solid #ccc;

到 textarea 本身:

height: 360px;

一些用户报告说,虽然他们可以在 textarea 中编辑文本,但无法使用返回键。无法添加新行?

我在网上搜索过,但找不到发生这种情况的例子。如果有人有任何好主意,我很想听听。谢谢。

【问题讨论】:

  • 我从来没有遇到过这样的问题;您可以创建一个带有

标签: html css textarea key return


【解决方案1】:

要添加到 Christoffer 的答案,如果您遇到同样的问题,您可以通过替换以下代码来解决它:

$(window).keydown(function(event){
    if(event.keyCode == 13) {
      event.preventDefault();
      return false;
    }
  });

用这个:

$(window).keydown(function(event){
    if((event.which== 13) && ($(event.target)[0]!=$("textarea")[0])) {
      event.preventDefault();
      return false;
    }
  });

这将允许 textarea 输入(新行),仍然阻止其余部分的输入键。

【讨论】:

    【解决方案2】:

    有同样的问题,但发现是因为我在表单上有一个 .preventDefault() - 最初是为了阻止输入提交表单。

    this.$el.keypress(function(e){
        if(e.which === 13){
            e.preventDefault();
        }
    }
    

    13 是输入的按键代码

    【讨论】:

    • 这种情况在我身上发生过几次,我一般在preventDefault上面加这个if(e.target.tagName.toLowerCase() == 'textarea'){ return }
    【解决方案3】:

    除了 textarea 的结束标签之外,您的代码是正确的:

    </textarea>
    

    【讨论】:

    • 哎呀,粘贴时手指有点麻烦。
    【解决方案4】:

    在我的情况下,问题是由于使用了 White-Space: normal。当我删除它时,问题就消失了。

    【讨论】:

      【解决方案5】:

      我以前从未听说过这样的事情,但我猜这与display:inline;有关

      当元素包含类似文本区域的内容时,这不应该是有效的。

      我建议将其更改为 display:inline-block;。这可能足以解决它。但无论哪种方式,这绝对是您正在做的事情的正确显示类型。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-08-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-12-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多