【问题标题】:Maximum length on a textarea in Ruby on RailsRuby on Rails 中文本区域的最大长度
【发布时间】:2010-10-27 13:06:43
【问题描述】:

我尝试在我的表单上的textarea 上应用:maxlenght => 40。 但它没有成功。 我们可以对文本区域进行长度限制吗?

文本区域的代码是

<%= f.text_area :data,
                :rows => 2,
                :cols => 60 ,
                :maxlength => 140,
                :autocomplete => :off,
                :class => "textareabytes" %>

【问题讨论】:

    标签: ruby-on-rails textarea


    【解决方案1】:

    就像Rahul 说的那样,HTML 中没有textareamaxlength 属性。只有text input 有这个。

    您需要记住的是,RoR 的 text_area 函数(以及所有 RoR 的 HTML 生成器函数)接受您提供的任何参数。如果他们无法识别该参数,那么他们只会将其转换为 HTML。

    <%=f.text_area :data, :hellothere => "hello to you too"%>
    

    将输出此 HTML:

    <textarea name="data" hellothere="hello to you too"></textarea>
    

    我知道这很难记住,但是 Ruby on Rails 并不神奇,它只是为你做了很多事情。诀窍是知道它们是如何工作的,这样您就可以了解它们为什么起作用,以及当它们不起作用时如何解决它们!

    【讨论】:

    • 从 HTML5 开始,textarea 有一个 maxlength 属性。不幸的是,它在 10 之前的 IE 中不受支持。请参阅 MDN 获取 full details
    • +1 表示“我知道这很难记住,但 Ruby on Rails 并不神奇——”
    • 我不明白。根据您所说,&lt;textarea maxlength="50"&gt;&lt;/textarea&gt; 应该在那里。因为一旦它出现在客户端,它就可以工作(至少在最新的 Chrome 中)。但在我的情况下,它没有被渲染。
    【解决方案2】:

    会不会是笔误?

    ":ma​​xlenght => 40 " 在您的帖子中拼写错误。

    编辑:

    我没有仔细阅读您的帖子。我认为 HTML 中的 textarea 没有 maxlength 属性。您将不得不在 JavaScript 中处理它。在“MaxLength on a Textarea”中有更多信息。

    【讨论】:

    • 我很抱歉实际上它在代码中是正确的,我在这里拼错了
    • Thnx 伙计,因为没有其他人去......我写了一个 javascript 函数来实现这个......
    【解决方案3】:

    当然不是严格意义上的你所追求的,但是,你总是可以放一个:

    validates_length_of :data, max: 40
    

    在您的模型上。当然不会停止文本区域的大小:)

    【讨论】:

    • 正确的方法,即使使用 maxlength 标签。
    【解决方案4】:

    您可以使用 maxlength 属性。它是 HTML5 中标签的新功能。它现在应该可以工作。

    【讨论】:

    • 你说得对!它在 2021 年的 Ubuntu 上的 Firefox、Chrome 和 Opera 中也能正常工作! \o/
    猜你喜欢
    • 1970-01-01
    • 2012-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-17
    相关资源
    最近更新 更多