这真的很奇怪。
我正在研究的morgage计算器(我之前有另一个问题)现在按照我想要的方式工作除了......它不会验证大于9999的值。
如果你转到下面的链接,你将能够看到我的意思。
代码应该确保在预付定金和购买价格中输入的值实际上是数字。如果不是,则会显示一条消息,如果有,则代码验证购买价格不高于预付款金额。
代码有效...但仅当您输入的值为9999或更低时。如果您这样做,例如...... 1350000和5000预付款,则代码不会提交。如果你做9999和5000,没问题。
我真的很困惑。有什么想法吗?
这是我的HTML。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>Assignment 8.1</title>
<link rel="stylesheet" type="text/css" href="css/css.css">
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
<script type="text/javascript" src="js/js.js" charset="utf-8"></script>
</head>
<body>
<h1>Mortgage Calculator</h1>
<form action="calc.php" method="post" id="mortgage-form">
<p class="errorMessage" id="shouldBeNumber">*This value can only contain numbers</p>
<p id="pPrice"><span class="errorMessage" id="PPmustBeNumber">*</span>Purchase Price:
<input type="text" name="purchase-price" id="purchase-price" value="0" /> <span class="errorMessage" id="purchasePriceError">Please enter a number value!</span>
</p>
<p id="dPayment"><span class="errorMessage" id="DPmustBeNumber">*</span>Down Payment:
<input type="text" name="down-payment" id="down-payment" value="0" /> <span class="errorMessage" id="downPaymentError">Down payment value must be less than Purchase Price!</span>
</p>
<p id="term">Select Term:
<select name="loan-term" id="loan-term">
<option value="noValueSelected">-- Select a Term --</option>
<option value="15yrs">15 Years</option>
<option value="20yrs">20 Years</option>
<option value="30yrs">30 Years</option>
</select><span class="errorMessage" id="termRequired"> * Term is required.</span>
</p>
<div id="rate"></div>
<p>
<input type="submit" name="submit" id="submit" value="Calculate!" />
</p>
</form>
<footer>
<p>© Copyright by Ricardo</p>
</footer>
</body>
</html>
请在我的jsfiddle中查看我的jquery。
答案 0 :(得分:5)
我认为问题在于你的功能:
function containsNumber(val) {
return /^(\d|,)+$/.test(val)
}
使用它:
function containsNumber(n) {
return !isNaN(parseFloat(n)) && isFinite(n);
}
答案 1 :(得分:0)
您似乎使用自定义正则表达式模式来检测它是否为数字。 为什么不用原生的javascript方法呢?
isNaN(val)
检查val是否包含有效数字。 所以在你的情况下,使用它。
function containsNumber(val) {
return !isNaN(val);
}
答案 2 :(得分:0)
我将三个值更改为整数 - http://jsfiddle.net/fLT8C/3/
var purchasePrice = parseInt($('#purchase-price').val());
var downPayment = parseInt($('#down-payment').val());
var loanTerm = parseInt($('#loan-term').val());