Jquery数学操作不起作用

Jquery Math operation not working

本文关键字:不起作用 操作 Jquery      更新时间:2023-09-26

我正在尝试验证两个文本框的数据。我有这个提交金额的文本框。

<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>

以及来自用户控件的另一个文本框。

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

ajax调用获取文本框的所有数据。如果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,但如果我输入200300,1000之间的任何值,它都会抛出错误。我到处找都找不到。

您应该将文本框值从字符串转换为浮点值。请将validateMount函数替换为以下函数。您的代码不起作用,因为其中的字符串正在进行比较,而不是转换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);
  }
}

您正在进行的比较是两个字符串之间的比较,而不是整数。您必须先将值强制转换为integer,然后再进行检查。

做这个

if (parseInt(sbmtAmount) > parseInt(loancollecBlnce)) 

如果您希望使用小数,请使用parseFloat