[英]How to allow only numbers on a text input but allow commands with JavaScript?
[英]Javascript Allow only Negative or postive numbers for JSF input text
我有一个输入文本,应该限制用户输入只能在字符串开头输入的负号。
由于我使用的是自定义的 primefaces jar,因此我无法使用p:inputNumber
(通过映射 bigdecimal)。 我添加了OnKeyPress
事件以允许数字和 DOT 符号。 但我无法限制用户在字符串中输入负号。 有什么办法可以在onkeypress
事件中实现它。 我在下面给出了我的代码
<h:inputText value="#{dimStackLine.max}"
onkeypress="if( (event.which < 48 || event.which > 57) && event.which != 46 ) return false;">
<p:ajax event="change" process="@this"></p:ajax>
<f:convertNumber pattern="####0.00000" />
</h:inputText>
只需为输入的第一个字符添加一个例外。 你可以通过做这样的事情来做到这一点;
<h:inputText value="#{downloadBackingBean.value}" onkeypress="if(($(this).val().length == 0 && even.which == 45) || ((event.which < 48 || event.which > 57) && event.which != 46 )) return false;">
<p:ajax event="change" process="@this"></p:ajax>
<f:convertNumber pattern="####0.00000" />
</h:inputText>
如您所见,这只是添加了一个额外的检查 - 如果它是输入字段中的第一个字符,则允许您输入减号。
如果您走这条路线,请确保在填充您的支持 bean 之前验证该值。
另一种方法是在服务器端做这个。 您可以通过 valueChangeListener 将该值推送到支持 bean。 然后,您可以通过执行以下操作来对流程进行 ajaxify 并恢复到服务器端验证,
<h:form>
<h:inputText valueChangeListener="#{bean.onNewValue}" value="#{bean.value}">
<f:ajax event="keyup" render="@form" execute="@form"/>
</h:inputText>
</h:form>
在设置支持 bean 值之前调用 valueChangeListener。 这允许您不断检查传入的值并相应地处理它们。 就像剥离不需要的字符一样。
您应该能够轻松地将其与 bean 验证或 JSF 验证结合起来,具体取决于您的环境支持什么。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.