【发布时间】:2013-01-30 03:46:42
【问题描述】:
我想要一个<p:inputText>,它应该只接受数字而不是任何其他字符。是否有可能让用户只能输入数字而其他字符被禁用?如果是这样,请告诉我怎么做。
【问题讨论】:
标签: jsf jsf-2 primefaces
我想要一个<p:inputText>,它应该只接受数字而不是任何其他字符。是否有可能让用户只能输入数字而其他字符被禁用?如果是这样,请告诉我怎么做。
【问题讨论】:
标签: jsf jsf-2 primefaces
最后,<h:inputText> 和 <p:inputText> 组件将渲染一个 <input type="text" /> HTML 组件。您唯一需要做的就是应用 JavaScript 方法来限制文本中允许的字符。
了解这一点后,您可以使用问题HTML Text Input allow only Numeric input 中提供的任何方法。我将根据帖子的第二个答案向您展示一个示例:
<h:head>
<script type="text/javascript">
//<![CDATA[
var numericRegex = /\d+\.?\d*/;
function validateNumericInput(evt, text) {
var theEvent = evt || window.event;
var key = theEvent.keyCode || theEvent.which;
key = String.fromCharCode( key );
if (key === '.') {
theEvent.returnValue = (text.indexOf(key) < 0);
} else {
var regex = /\d/;
if( !regex.test(key) ) {
theEvent.returnValue = false;
if(theEvent.preventDefault) theEvent.preventDefault();
}
}
}
//]]>
</script>
</h:head>
<h:body>
Try to write a non-numeric
<p:inputText onkeypress="validateNumericInput(event, this.text)" />
</h:body>
请注意,此示例只允许写入正实数,只需更改 JavaScript 方法以定义不同的行为。
【讨论】:
<p:inputText>,它应该只接受数字而不是任何其他字符,所以 OP 需要一种方法来验证客户端的输入:。唯一的方法是使用 JavaScript。我认为 OP 也会有一个服务器验证器,但这不在问题范围内。