【问题标题】:Limit number of lines able to write with textarea限制能够用 textarea 写入的行数
【发布时间】:2015-01-08 08:59:15
【问题描述】:

我不仅要限制在文本区域中可以按 Enter 的次数,而且要阻止输出超过两行。为了更好地解释,我有一个相框设计师here。在选项中,您可以输入文本,它将出现在框架上。目前,如果您尝试在文本区域按 Enter 键超过 2 次,它不会让您这样做。当文本太长并自动换行时会出现问题。

这是一些相关的代码。

$(document).ready(function(){        
    var lines = 2;
    var linesUsed = $('#linesUsed');

    $('#input').keydown(function(e) {
        newLines = $(this).val().split("\n").length;
        linesUsed.text(newLines);
        if(e.keyCode == 13 && newLines >= lines) {
            return false;
        }
    });
});

这是一些限制 TEXTAREA 中行数的 jquery。

还有文本区域

<textarea id="input" maxlength="40" name="Text" value="Max. 40 characters"></textarea>

从文本区域打印输入的 jquery

$('#input').keyup(function() {
    $('#text').html($(this).val());
});

这是我的 svg 中嵌入的 html,输入的文本打印到该位置。

<foreignObject x="135" y="520" width="600" height="260" style="color:white;text-align:center">
    <body xmlns="http://www.w3.org/1999/xhtml">
        <div id="container2">
            <p id="text">Your words here</p>
        </div>
    </body>
</foreignObject>

【问题讨论】:

    标签: javascript jquery html svg


    【解决方案1】:

    使用属性wrap=off 可以防止文本区域中的自动换行,该属性是非标准的,但自HTML 早期以来就得到广泛支持。

    <textarea id="input" maxlength="40" name="Text"
    placeholder="Max. 40 characters" wrap="off"></textarea>

    (我已将value 属性更改为placeholder 属性。value 属性对textarea 无效。)

    另一种可能更好的方法是通过使用两个 input type=text 字段而不是一个 textarea 字段来避免该问题。那么你就不需要 JavaScript 来阻止超过两行的输入,但是如果需要限制字符总数(而不是仅仅设置每行的限制),你就需要简单的 JavaScript。

    【讨论】:

    • 啊,我明白了。是的,占位符改进了它,谢谢。我宁愿不使用输入。似乎更容易做JavaScript。但是谢谢不知道 wrap 属性。
    【解决方案2】:

    这里有 2 个 javascript 库可以帮助您:

    正如您在演示网站上看到的,这两种解决方案都可以正常工作。

    【讨论】:

    • 那又怎样?如果它有效,它就有效……在过去的 3 年中,textarea 元素并没有发生根本性的变化。
    • 使用 1.4 版的 jquery 确实如此,但从那时起它可能没有在任何版本上进行过测试
    猜你喜欢
    • 2014-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-20
    • 1970-01-01
    • 2020-01-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多