首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在h:inputTextarea上设置maxlength属性

如何在h:inputTextarea上设置maxlength属性
EN

Stack Overflow用户
提问于 2011-02-08 00:15:57
回答 3查看 59.8K关注 0票数 24

如何限制<h:inputTextarea>的长度?对于<h:inputText>,它可以很好地使用maxlength属性。但是,此属性在<h:inputTextarea>中不可用。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-02-08 02:23:28

HTML5 + JSF 2.2+

如果您使用的是HTML5和JSF 2.2+,请将其指定为passthrough attribute

<html ... xmlns:a="http://xmlns.jcp.org/jsf/passthrough">

<h:inputTextarea value="#{bean.text}" a:maxlength="2000" />

HTML5 +JSF2.0/2.1

如果您正在使用HTML5,但还没有使用JSF2.2,那么可以使用OmniFaces Html5RenderKit来识别JSF2.0/2.1中的新HTML5属性。

<h:inputTextarea value="#{bean.text}" maxlength="2000" />

HTML4

如果你使用的是HTML4,那么HTML语言本身就不支持它。仅在<input>元素上受支持,在<textarea>元素上不受支持。这也是为什么在这个HTML元素的JSF表示上没有这样的属性。您需要在客户端使用JS和/或在服务器端使用JSF来解决此需求。JS允许您立即验证长度并忽略所有其他字符。JSF还允许您在客户端禁用或破解JS代码的情况下对其进行验证。最好是两者兼而有之。

假设你有一个

<h:inputTextarea value="#{bean.text}" styleClass="max">
    <f:validateLength maximum="2000" />
</h:inputTextarea>

下面是你如何做jQuery

$('textarea.max').keyup(function() {
    var $textarea = $(this);
    var max = 2000;
    if ($textarea.val().length > max) {
        $textarea.val($textarea.val().substr(0, max));
    }
});
票数 36
EN

Stack Overflow用户

发布于 2011-02-08 00:18:47

<h:inputTextarea  required="true" cols="50" rows="5" id=”aboutMe” value="#{person.aboutMe}”>
          <f:validateLength maximum="400" minimum="20"/>
    </h:inputTextarea>
票数 6
EN

Stack Overflow用户

发布于 2012-02-15 01:08:07

$textarea.val().length的答案是好的,但请注意,使用f:validateLength maximum="2000" />调用的JSF验证器将计算新行字符两次,而BalusC只会计算一次。如果希望两个验证器对多行输入返回相同的结果,则需要在JavaScript验证器中重复计算换行符。

这个问题的一个例子是在文本区域输入"Hello\nWorld",其中\n实际上是换行符。如果让用户输入多个段落,这种差异显然会变得更严重。

虽然不是关于同一主题,但this文章的前几段对JavaScript行为进行了解释。关于这个问题也有一些可能有用的评论。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4923573

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档