问题描述
我一直试图使此代码在您键入时以实时货币格式显示文本字段编号。但是一旦页面加载完毕,它会给我一条错误消息,内容如下:警告: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.NumberFormat
与style: '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">