2014-11-21 42 views
0

我的xpage中連接到數據源「d」的代碼如下,註釋表單中的字段Fld2是類型編號。XPages中的類型編號的HTML字段不接受小數點

<xp:inputText value="#{d.Fld2}" id="fld21" type="number"> 
        <xp:this.converter> 
         <xp:convertNumber type="number"></xp:convertNumber> 
        </xp:this.converter> 
</xp:inputText> 

之所以使用這兩個轉換器型號和輸入字段類型號是因爲我想彈出一個數字鍵盤在iPad上。所以這個屬性將使得類型編號的ui字段。在某些瀏覽器中,還有一些其他好用的HTML5功能添加到UI領域,如步驟箭頭。

注:指定數轉換器領域不作的類型號的HTML元素

我的問題是,這個代碼不爲小數工作,如果我輸入1,3或1.3它不認識到這是一個數,一切條爲1

右如果刪除atrribute類型=從代碼一切「號碼」作品

我試圖添加HTML5「步長=任何」 attribut但不能得到它的工作 http://blog.isotoma.com/2012/03/html5-input-typenumber-and-decimalsfloats-in-chrome/

如果我添加attrribute步驟=「0.1」我可以一次使用UI字段箭頭步驟一個小數,但是當我保存文檔的小數被除去

如何添加的數字HTML字段鍵入數字,接受小數到我的xpage?

回答

4

原來是這是我用瑞典語我在網頁瀏覽器時遇到本地化問題。只要我切換到英文它工作。

我曾與Chintan這個問題聊了很久,我們討論了幾種解決方案,包括添加自定義模式,像這樣

<xp:inputText id="inputText2" value="#{document1.myField}" styleClass="floatNumberInput" type="number"> 
    <xp:this.attrs> 
     <xp:attr name="type" value="number"></xp:attr> 
     <xp:attr name="step" value="any"></xp:attr> 
    </xp:this.attrs> 
    <xp:this.converter> 
     <xp:convertNumber pattern="#.##0,00"></xp:convertNumber> 
    </xp:this.converter> 
</xp:inputText> 

然而,這並沒有幫助,所以我代替我想出了一個解決辦法

首先我刪除的屬性,恢復到正常數值的XPages場

<xp:inputText id="inputText2" value="#{d.Fld2}" styleClass="num"> 
    <xp:this.converter> 
     <xp:convertNumber type="number"></xp:convertNumber> 
    </xp:this.converter> 
</xp:inputText> 

然後,我添加了一個jQuery腳本,會照顧Ø f當我輸入字段時將類型更改爲數字,然後在離開字段時恢復爲文本,從而使用ipad上的數字鍵盤。

和lastely我防止用戶在進入任何非數字字符的數字字段

$(function(){ 

$(".num").on('touchstart', function() { 
     $(this).prop('type', 'number'); 
}); 

$(".num").on('keydown blur', function() { 
     $(this).prop('type', 'text'); 
}); 

$(".num").keyup(function() { 
    this.value = this.value.replace(/[^0-9.,-]/g,''); 
}); 

}) 

注:上面的代碼使用一個jQuery丙方法而不是ATTR方法用於改變的屬性,因爲ATTR方法不允許改變類型由於一些問題與IE

1

我想這應該有所幫助。我在這裏完成的唯一不同的事情是調整「xpage類型字段」。當我遇到@ tim-tripcony的優秀答案this時,我遇到了同樣的問題。然而,這會幫助你:

<?xml version="1.0" encoding="UTF-8"?> 
<xp:view xmlns:xp="http://www.ibm.com/xsp/core"> 
    <xp:this.data> 
     <xp:dominoDocument var="document1" formName="numberTest"></xp:dominoDocument> 
    </xp:this.data> 
    <xp:inputText id="inputText1" value="#{document1.myField}" 
     defaultValue="5.3" styleClass="floatNumberInput"> 
     <xp:this.attrs> 
      <xp:attr name="type" value="number"></xp:attr> 
      <xp:attr name="step" value="0.01"></xp:attr> 
     </xp:this.attrs> 
    <xp:this.converter> 
     <xp:convertNumber pattern="#.##0,00"> 
</xp:convertNumber> 
    </xp:this.converter> 
    </xp:inputText> 
    <xp:button value="Submit" id="button1"> 
     <xp:eventHandler event="onclick" submit="true" 
      refreshMode="complete" immediate="false" save="true"> 
     </xp:eventHandler> 
    </xp:button> 
    <!-- Script to overwrite the default input type text --> 
    <xp:scriptBlock> 
    <xp:this.value><![CDATA[XSP.addOnLoad(function(){ 
    dojo.query(".floatNumberInput").forEach(function(eachInput){ 
     dojo.attr(eachInput, "type", "number"); 
    }); 
});]]></xp:this.value> 
</xp:scriptBlock> 
<!-- End of script block --> 
</xp:view> 
+0

Chintan,謝謝你的回答。但是,這似乎不是我的問題與保存十進制數的答案。您的代碼似乎只是將「type = number」屬性添加到html字段,我已經在我的代碼中執行了該操作。 (順便說一句,type屬性並不需要腳本來設置這些天) 讓我知道,如果我忽略了有關您的解決方案 – 2014-11-24 08:39:57

+1

我沒有得到你。你想在XPage上有一個數字選擇器,並且字段值應該以float形式存儲,對嗎?上面的代碼完全是你想要的..請讓我知道如果我錯了.. – 2014-11-24 08:47:03

+1

我也加了轉換器(我認爲你會得到它,因爲你在問題中提到它),這也將存儲字段作爲筆記文件中的數字。 – 2014-11-24 08:53:37

相關問題