2013-07-25 74 views
0

有沒有一種方法,在richfaces中,ajaxvalidator或ajax支持用戶在inputText中寫入數據,只要他寫入數字以外的內容即可。 換句話說,當用戶輸入NaN時,是否可以禁用inputText字段。jsf inputText驗證程序

例如:如果用戶試圖寫:「11a」,有沒有辦法阻止用戶寫a? 所以當他按下「a」警告輸入不是數字時會出現。

這是JSF代碼:

<h:inputText id="price" value="#{carBB.price}" required="true"> 
    <rich:ajaxValidator event="onkeypress"/>     
</h:inputText> 

這是在bean代碼:

@NotNull 
private double price; 

public double getPrice() { 
return price; 
} 

public void setPrice(int price) { 
this.price = price; 
} 

在我的代碼,當用戶寫的NaN但這並不妨礙他出現的警告寫它。

+1

爲什麼不阻止輸入文字的通過JavaScript的手段?你需要什麼服務器? – skuntsel

+0

這是一個更大的應用程序,只是整個頁面的一種形式。 – alan

回答

0

我結束了這一點,對我工作的罰款只允許雙打:\

在標題:

<script type="text/javascript"> 
function disableKeys(e,exist) 
{ 
    var unicode=e.keyCode; 
    var value = exist.value; 
    if((unicode< 0x30 && unicode != 0x2E) || unicode> 0x39) 
    { 
     alert("Invalid Input should be number or \".\""); 
     return false; 
    } 
    else if(unicode == 0x2E && value.indexOf(".")>=0) 
    { 
     alert("Invalid Input already contains a \".\""); 
     return false; 
    } 
    else 
    { 
     return true; 
    } 

} 
</script> 

在車身:

<h:inputText id="price" value="#{carBB.price}" onkeypress="return disableKeys(event,this);"/> 
0
<h:inputText id="myId" value="#{myBean.value}" 
      onkeypress="if((event.which &lt; 48 &amp;&amp; event.which != 44 &amp;&amp; event.which != 46) || event.which &gt; 57) return false;"/> 

這將允許數字,逗號和點。

+0

我認爲這不會做,因爲該字段是'double',用戶可能也想添加'.'符號。 –

+0

是的,我試過它沒有工作,使用字母仍然工作 – alan