【发布时间】:2015-05-31 09:56:16
【问题描述】:
我正在寻找一个正则表达式和一个 JavaScript 函数,它将用户刚刚输入的内容向上舍入到最多 2 位小数,用户可以输入任何数字和点,例如1, 2.3490, 23 并且当用户点击离开该字段时它应该更改为 1.00, 2.35, 23.00。到目前为止,我已经想出了这个:
这是我的正则表达式:
var pPrice = /^\d*\.\d*$/;
我的 JavaScript 函数:
// Function to validate price
function validateProductPrice(){
var priceRound = document.getElementById("productprice").value;
var priceHack = Math.round(priceRound*100)/100;
if (document.myForm.priceHack.value.trim().search(pPrice) == -1) {
alert("WRONG INPUT FOR PRICE!");
document.getElementById("priceERROR").style.display = "none";
} else {
document.getElementById("priceERROR").innerHTML = "CORRECT.";
document.getElementById("priceERROR").style.display = "block";
}
}
我的这个字段的 html:
<div>
<input type="text" class="productprice" placeholder="Price" name="productprice" onblur="return validateProductPrice() ">
<span id="priceERROR"></span>
<p class="price-help">Price e.g. if $1 please enter 1.00.</p>
</div>
我遇到了一些麻烦,因为它真的不起作用,我不知道为什么!
感谢大家的帮助!
编辑
我通过修复我在以下答案中得到的正则表达式并意识到我的输入没有 ID 来修复它,所以我正在调用一个空值,现在我的代码是:
我的正则表达式是:
var pPrice = /^((?:\d+(?:\.\d*)?)|(?:\.\d+))$/
我的 JavaScript 是:
function validateProductPrice(){
var priceRound = document.getElementById("productprice").value;
var priceHack = Math.round(priceRound*100)/100;
if (document.myForm.productprice.value.trim().search(pPrice) == -1) {
alert("WRONG INPUT FOR PRICE!");
document.getElementById("priceERROR").style.display = "none";
} else {
document.getElementById("productprice").value = priceHack;
document.getElementById("priceERROR").innerHTML = "CORRECT.";
document.getElementById("priceERROR").style.display = "block";
}
我的html是:
<div>
<input id="productprice" type="text" class="productprice" placeholder="Price" name="productprice" onblur="return validateProductPrice()" >
<span id="priceERROR"></span>
<p class="price-help">Price e.g. if $1 please enter 1.00.</p>
</div>
现在它还会覆盖用户输入的任何内容,如果他输入 2.336678,则只显示 2.34,这就是我要找的!
感谢大家帮助我解决这个问题!希望我的编辑也能帮助人们!!
【问题讨论】:
-
什么不起作用?有什么具体问题吗?
-
是的,它不会对数字进行四舍五入,甚至不会做任何事情,即使我写了一个字母 EDIT 也会通过它就像我的正则表达式被忽略了
-
没有足够的信息,但是,您应该首先使用正则表达式验证输入,然后才能进行计算。除此之外,使用调试器——它将是你会发现的最有用的工具
标签: javascript jquery regex rounding