[英]Client-side javascript to format number (currency)
想要格式化美元的货币字段。 因此,如果用户输入14590.1,它将更改为14,590.10。 我什至不希望甚至没有美元符号,但是我目前的代码确实有美元符号。
我认为下面的内容还不错,尽管我也想检查一个有效的数字,如果无效则将用户扔回该字段中。
我认为这很简单,并且会有一个函数可以执行此操作,但是我找不到一个。
有没有比我一起扔的东西更好的东西?
<?xml version="1.0" encoding="UTF-8"?>
<xp:view
xmlns:xp="http://www.ibm.com/xsp/core"
xmlns:xe="http://www.ibm.com/xsp/coreex">
<xp:scriptBlock
id="scriptBlock2"
type="text/javascript">
<xp:eventHandler
id="formatNumber"
submit="false"
event="onClientLoad">
<xp:this.script><![CDATA[
formatNumber = function(x) {
//Must remove $ and any commas
y = x.replace(',','');
z = y.replace('$','');
//Must fix to 2 decimal places
if ((typeof z) === 'string'){
z = parseFloat(z).toFixed(2)}
else {
z = z.toFixed(2)
}
//Now put it back in the field
XSP.getElementById("#{id:djCurrencyTextBox1}").value = parseFloat(z);
XSP.partialRefreshPost('#{id:djCurrencyTextBox1}');
}
]]></xp:this.script>
</xp:eventHandler>
</xp:scriptBlock>
<xp:inputText
id="djCurrencyTextBox1"
value="#{viewScope.a}"
styleClass="pull-right"
style="width:200px;text-align:right"
defaultValue="0">
<xp:this.converter>
<xp:convertNumber type="currency"></xp:convertNumber>
</xp:this.converter>
<xe:this.dojoAttributes>
<xp:dojoAttribute
name="input"
value="text-align: right">
</xp:dojoAttribute>
</xe:this.dojoAttributes>
<xp:eventHandler
event="onchange"
submit="false">
<xe:this.script><![CDATA[val = XSP.getElementById("#{id:djCurrencyTextBox1}").value
formatNumber(val);]]></xe:this.script>
</xp:eventHandler>
</xp:inputText>
</xp:view>
我尝试使用dojo,但是如果用户没有输入两位数字,则无法接受它。 如果用户输入1234并在字段外使用制表符,则希望将其修改为1234.00。 如果他们输入1234.8并制表符,则应为1234.80。 II认为我没有添加正确的属性:
<xe:djCurrencyTextBox
id="djCurrencyTextBox2"
value="#{doc.prjAmtColumn11}"
styleClass="pull-right"
style="width:100px;text-align:right"
defaultValue="0">
<xe:this.dojoAttributes>
<xp:dojoAttribute
name="input"
value="text-align: right" />
<xp:dojoAttribute
name="constraints"
value="fractional:yes">
</xp:dojoAttribute>
<xp:dojoAttribute
name="places"
value="2">
</xp:dojoAttribute>
</xe:this.dojoAttributes>
<xe:this.constraints>
<xe:djNumberConstraints
currency="USD"
fractional="auto"
type="currency"
places="2">
</xe:djNumberConstraints>
</xe:this.constraints>
<xp:eventHandler
event="onchange"
submit="false">
<xp:this.script><![CDATA[calculate();]]></xp:this.script>
</xp:eventHandler>
</xe:djCurrencyTextBox>
“ Dojo货币文本框”控件可以满足您的要求,并且包含在“控件”面板中“ Dojo表单”抽屉下的9.0.1中。
霍华德
<xe:djCurrencyTextBox id="djCurrencyTextBox1"
value="#{document1.NumField_2}"
promptMessage="enter a US dollar amount">
<xe:this.constraints>
<xe:djNumberConstraints currency="USD"
type="currency">
</xe:djNumberConstraints>
</xe:this.constraints>
<xp:this.converter>
<xp:convertNumber></xp:convertNumber>
</xp:this.converter>
</xe:djCurrencyTextBox>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.