在键入IT时使用CURRENCY FORMAT实时显示数字的文本字段例如:1,000.00

问题描述

我一直试图使此代码在您键入时以实时货币格式显示文本字段编号。但是一旦页面加载完毕,它会给我一条错误消息,内容如下:警告:number_format()期望参数1为double ...

请,有人可以帮助我解决代码问题。下面是我的代码

            <input id="source" type="text" oninput="copyData('source','target')"  />
            
            <?PHP
            $num = '<span id="target" class="myDIV"></span>';
            $formattednum = number_format($num,2);
            echo $formattednum;
            ?>
            
            <script type="text/javascript">
                  function copyData(sourceId,targetId) {
                    var data = document.getElementById(sourceId).value;
                    document.getElementById(targetId).innerHTML = data; 
                  }
            </script>

解决方法

您无法使用PHP进行实时更新。 为此,您需要使用JS

PHP的number_format(number,n)可以替换为JS的Number.toFixed(n)

function copyData(sourceId,targetId) {
  var data = Number(document.getElementById(sourceId).value);
  document.getElementById(targetId).innerHTML = data.toFixed(2); 
}
<input id="source" type="text" oninput="copyData('source','target')"  />
<span id="target" class="myDIV"></span>
            


通过将Intl.NumberFormatstyle: 'currency'结合使用,您可以走得更远,它将检测您的用户位置并以用户的区域格式显示值

function copyData(sourceId,targetId) {
  var data = Number(document.getElementById(sourceId).value);
  document.getElementById(targetId).innerHTML = new Intl.NumberFormat(undefined,{ style: 'currency',currency: 'EUR' }).format(data); 
}
<input id="source" type="text" oninput="copyData('source','target')"  />
<span id="target" class="myDIV"></span>

,

使用jquery蒙版货币库

https://github.com/plentz/jquery-maskmoney

示例在这里

https://plentz.github.io/jquery-maskmoney/

另一个示例链接是

https://codepen.io/saini3080/pen/MWyxwZV

谢谢

片段示例:

$(document).ready(function(){
  $('#maskmoney').maskMoney();
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-maskmoney/3.0.2/jquery.maskMoney.min.js"></script>

<input id="maskmoney" name="mask_input" type="text">