2016-07-31 34 views
0

我想验证两个文本框的数据。我已经提交了这个文本框。Jquery数学运算不起作用

<div class="col-md-3"> 
    <label for="SubmittedAmountTextBox">Total Submitted Amount</label> 
    <Everest:AmountTextBox runat="server" ID="SubmittedAmountTextBox" TriggerDenomination="True" autocomplete="off" CssClass="loan-amount-input submitted-amount"></Everest:AmountTextBox> 
    <asp:RequiredFieldValidator runat="server" ID="SubmittedAmountTextBoxRequiredFieldValidator" Display="Dynamic" 
              ErrorMessage="Required" ControlToValidate="SubmittedAmountTextBox" CssClass="alert alert-error" Style="padding: 5px;" SetFocusOnError="true" /> 
</div> 

另一个来自usercontrol的文本框。

<div class="col-sm-2"> 
    <asp:TextBox runat="server" ID="LoanCollectionBalanceTextBox" CssClass="form-control input-sm" data-bind-property="CollectionBalance" /> 
</div> 

ajax调用获取文本框的所有数据。我只是试图通过bootbox警报,如果SubmittedAmountTextBox输入大于LoanCollectionBalanceTextBox

我的jQuery函数用于验证:

function validateAmount() { 
     var sbmtAmount = $('#SubmittedAmountTextBox').val(); 
     console.log(sbmtAmount); 
     var loancollecBlnce = $('#LoanCollectionBalanceTextBox').val(); 

     if (sbmtAmount > loancollecBlnce) { 
      alert(sbmtAmount); 
      alert(loancollecBlnce); 
      debugger; 
      //bootbox.alert("Submitted amount is higher then Collection Balance") 
      $("#SaveButton").attr('disabled', 'disabled'); 
     } else { 
      $("#SaveButton").attr('disabled', false); 
     } 
    } 

SubmittedAmountTextBox

$('#SubmittedAmountTextBox').on('blur', function (evt) { 
    var checkedValue = $('input[id*=loanTypeCheck]:checked').val(); 
    if (checkedValue === "Cash") { 
     $(this).trigger('showDeno', [$(this)]); 
    } else if (checkedValue === "Dharauti") { 
     validateAmount(); 
    } 
}); 

模糊事件和怪异的一部分是它不验证,如果SubmittedAmountTextBox>LoanCollectionBalanceTextBox。假设LoanCollectionBalanceTextBox是12500,如果我输入更多,那么它会引发警报。如果我输入100,它不会因为12500> 100,但如果我输入200,300之间的任何数值,它确实会抛出错误。我到处搜索无法得到这个。

+2

,因为你在不知不觉中对字符串进行操作,而“12500” <“200”词汇 –

+0

@JaromandaX我没有得到你sir..I我仍然挂在学习曲线左右。 – OLDMONK

+1

['.val()'](http://api.jquery.com/val/)返回一个字符串。首先必须将值转换为数字(['parseInt()'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/parseInt)或['parseFloat( )'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/parseFloat)) – Andreas

回答

2

你应该不得不将你的文本框的值从字符串中的浮点值转换。请用下面的代码替换您的validateAmount函数。你的代码不工作,因为它在字符串中进行比较,而不是在float中转换文本框的值。

function validateAmount() { 
    var sbmtAmount = parseFloat($('#SubmittedAmountTextBox').val(); 
    console.log(sbmtAmount)); 
    var loancollecBlnce = parseFloat($('#LoanCollectionBalanceTextBox').val()); 

    if (sbmtAmount > loancollecBlnce) { 
     alert(sbmtAmount); 
     alert(loancollecBlnce); 
     debugger; 
     //bootbox.alert("Submitted amount is higher then Collection Balance") 
     $("#SaveButton").attr('disabled', 'disabled'); 
    } else { 
     $("#SaveButton").attr('disabled', false); 
    } 
} 
+0

谢谢你,先生 – OLDMONK

1

你正在做的比较是在两个字符串之间,而不是整数。您必须首先将值转换为整数,然后执行检查。

做这个

if (parseInt(sbmtAmount) > parseInt(loancollecBlnce)) 
在你的代码

parseFloat如果你期待小数。