如何限制 <h:inputTextarea>
的长度?对于 <h:inputText>
它适用于 maxlength
属性。但是,此属性在 <h:inputTextarea>
中不可用。 .
最佳答案
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 + JSF 2.0/2.1
如果您使用的是 HTML5,但还不是 JSF 2.2,请使用 OmniFaces
Html5RenderKit
在 JSF 2.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));
}
});
关于validation - 如何在 h :inputTextarea 上设置 maxlength 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4923573/