Javascript只允许JSF输入文本使用负数或正数

  • 本文关键字:文本 JSF Javascript javascript jsf
  • 更新时间 :
  • 英文 :


我有一个输入文本,它应该限制用户输入只能在字符串开头输入的负号。

由于我使用的是自定义的primefaces jar,所以我不能使用p:inputNumber(通过映射bigdecimal)。我添加了OnKeyPress事件以允许数字和DOT符号。但我不能限制用户在字符串中输入负号。有什么办法可以在onkeypress事件中实现它吗。我在下面给出了我的代码

<h:inputText value="#{dimStackLine.max}"
onkeypress="if( (event.which &lt; 48 || event.which &gt; 57) &amp;&amp; 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 &amp;&amp; even.which == 45) || ((event.which &lt; 48 || event.which &gt; 57) &amp;&amp; event.which != 46 )) return false;">
<p:ajax event="change" process="@this"></p:ajax>    
<f:convertNumber pattern="####0.00000" />
</h:inputText>

正如您所看到的,这只是添加了一个额外的检查——如果减号是输入字段中的第一个字符,则允许您输入减号。

如果您采用这种方法,请确保在值填充您的backingbean之前验证该值。

另一种服务器端方法

另一种方法是在服务器端执行此操作。您可以通过valueChangeListener将该值推送到backingbean。然后,您可以通过这样做来调整流程并恢复到服务器端验证,

<h:form>
<h:inputText valueChangeListener="#{bean.onNewValue}" value="#{bean.value}">
<f:ajax event="keyup" render="@form" execute="@form"/>
</h:inputText>
</h:form>

valueChangeListener是在设置backingbean值之前调用的。这允许您不断地检查传入值并相应地处理它们。就像去掉不需要的字符。

您应该能够很容易地将其与bean验证或JSF验证相结合,这取决于您的环境支持什么。

最新更新