【问题标题】:Format decimal places for primefaces ext input numeric格式化primefaces ext输入数字的小数位
【发布时间】:2013-06-21 01:26:23
【问题描述】:

我有一些代码如下(工作正常)

  <pe:inputNumber
        value="#{myBean.myVal}"
        minValue="0" maxValue="999999999999999.999999999"
        emptyValue="1"
        thousandSeparator="."
        decimalSeparator=","
    />

然后,如果我输入 [1],它将显示 [1,000000000],我的麻烦是很多零可能会让我的用户感到困惑。 是否可以在此输入上对其进行修剪?,只需显示用户输入的任何内容,例如[1,20] -&gt; [1,2] or [1,20]

【问题讨论】:

    标签: jsf input primefaces numeric primefaces-extensions


    【解决方案1】:

    我的脚本:

    function trimDecimalPlace(){                
                    var curVal = $(".ui-inputNum > input:first-child").val();
                    var parseVal = '';
                    if(curVal.indexOf(".") > curVal.indexOf(",")){
                        var tokens = curVal.split(".");
                        var decimalVal = parseFloat("0."+tokens[1])+"";                 
                        if(decimalVal != "0"){
                           parseVal = tokens[0]+"."+decimalVal.substring(2);
                        }else{
                           parseVal = tokens[0];
                        }   
                    }else{
                        var tokens = curVal.split(",");
                        var decimalVal = parseFloat("0."+tokens[1])+"";                 
                        if(decimalVal != "0"){
                           parseVal = tokens[0]+","+decimalVal.substring(2);
                        }else{
                           parseVal = tokens[0];
                        }
                    }
                    $(".ui-inputNum > input:first-child").val(parseVal);
                }
    

    并在模糊时调用它:

        <pe:inputNumber
            value="#{myBean.myVal}"
            minValue="0" maxValue="999999999999999.999999999"
            emptyValue="1"
            onblur="trimDecimalPlace();"
            thousandSeparator="."
            decimalSeparator=","
        />
    

    【讨论】:

      【解决方案2】:

      您可以使用decimalPlaces 属性。默认值是从maxValue 属性获得的,因此在您的情况下它是 999999999999999。999999999

      【讨论】:

      • 我试过了,但是当设置 decimalPlaces='2' 我只能输入 *.99 作为最大值
      • 我使用 javascript 将其修剪为用户输入的准确结果,这不是一个最佳主意,但可以正常工作。
      • 请问为什么需要修剪用户输入的内容而不是限制十进制数字?
      • 我允许我的用户输入 0.999999999,而不是 0.99,但是,我不希望 0.99 显示为 0.990000000
      【解决方案3】:

      只需将标签 padControl="false" 与 inputNumber 控件一起使用

      <p:inputNumber style="width:140px;"
          value="#{mopEdicionBean.permisoMop.mopKlmtFinalB}"
          thousandSeparator="" decimalPlaces="3" maxlength="4" minValue="0"
          maxValue="9999" size="16" padControl="false">
          <p:ajax event="change" update="nombre_permiso"/>
      </p:inputNumber>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-06-04
        • 1970-01-01
        • 1970-01-01
        • 2021-09-03
        • 1970-01-01
        • 2019-04-24
        • 1970-01-01
        相关资源
        最近更新 更多