Ruby on Rails 中文本区域的最大长度
Posted
技术标签:
【中文标题】Ruby on Rails 中文本区域的最大长度【英文标题】:Maximum length on a textarea in Ruby 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" %>
【问题讨论】:
【参考方案1】:就像Rahul 说的那样,html 中没有textarea
的maxlength
属性。只有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 并不神奇——”
HTML5 的最大长度来源:w3schools.com/tags/att_textarea_maxlength.aspdeveloper.mozilla.org/en-US/docs/Web/HTML/Element/…
我不明白。根据您所说,<textarea maxlength="50"></textarea>
应该在那里。因为一旦它出现在客户端,它就可以工作(至少在最新的 Chrome 中)。但在我的情况下,它没有被渲染。【参考方案2】:
会不会是笔误?
":maxlenght => 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/以上是关于Ruby on Rails 中文本区域的最大长度的主要内容,如果未能解决你的问题,请参考以下文章