我提交的frm基本上是购买发票。在提交表单之前,我想实施检查,用户不会在文本框中输入超过总账单的金额。例如,如果总账单是300,并且在“付款金额”文本框中,用户意外输入3000,那么它应该在这里显示错误信息是我的代码:
$("#mainform").submit(function() {
var total = $("#gtotal").val();
var paid = $("#paid").val();
alert(paid);
alert(total);
if(paid > total)
{
alert("Amount can't be greater than total");
return false;
}
return true;
});
当我提醒付费和总金额时,他们会显示正确的值,但如果条件未满足,if条件有时无法提交表格,有时甚至不满足条件
答案 0 :(得分:1)
试试这个,它可能有效:
var total = parseInt($("#gtotal").val());
var paid = parseInt($("#paid").val());
答案 1 :(得分:1)
.val()返回字符串
使用 parseFloat 将付费和总计转换为浮动,使用 isNaN 进行检查,然后进行比较。像这样:
paid = parseFloat(paid);
total = parseFloat(total);
if (!isNaN(paid) && !isNaN(total)) {
if (paid > total) {
...
如果您不使用小数,则可以使用 parseInt
答案 2 :(得分:1)
在提交函数上添加一个参数,并调用preventDefault方法以避免提交表单。
.submit(function(event) {
...
if (paid > total) {
...
event.preventDefault();
}
答案 3 :(得分:1)
错过了一些条件:
为了将字符串转换为数字,您可以在字符串前加上加号。
解决方案可能是:
$("#mainform").on('submit', function(e) {
var total = +$("#gtotal").val();
var paid = +$("#paid").val();
if (($("#gtotal").val().trim().length == 0) || isNaN(total)) {
console.log("Please specify total");
$("#gtotal").focus();
e.preventDefault();
//
// stop function execution....
//
return;
}
if (($("#paid").val().trim().length == 0) || isNaN(paid)) {
console.log("Please specify paid");
$("#paid").focus();
e.preventDefault();
//
// stop function execution....
//
return;
}
if(paid > total) {
console.log("Amount can't be greater than total");
//
// prevent the submit action
//
re.preventDefault();
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form id="mainform" action="http://www.google.com">
gtotal: <input id="gtotal" type="text">
paid:<input id="paid" type="text">
<input type="submit" value="Submit Form">
</form>