【问题标题】:Jquery less than equal to logical issueJquery小于等于逻辑问题
【发布时间】:2018-01-18 05:35:34
【问题描述】:

我有 4 个输入字段:

  1. 学分
  2. 余额
  3. 金额
  4. 收据余额及其金额。

都是数组输入类型。

目标:

  1. 如果信用额度中的任何值大于其特定的信用余额数组值,则标志设置为1
  2. 同样,如果收款金额大于余额,则 flag1 设置为1

问题:当两个值都相等时,它的取值标志为1

$('#check_bala').click(function(event) {
    event.preventDefault();
    var inps = document.getElementsByName('credit_bala[]');
    var inps1 = document.getElementsByName('apply_amount[]');
    var inps2 = document.getElementsByName('balance_rece[]');
    var inps3 = document.getElementsByName('apply_amount1[]');
    var flag = 0;
    var flag1 = 0;
    for(i=0;i<inps.length;i++)
    {
      for(j=0;j<inps1.length;j++)
      {
      if(inps[i].value <= inps1[j].value)
      {
        flag=1;
      }
      }
    }
      for(i1=0;i1<inps2.length;i1++)
    {
      for(j1=0;j1<inps3.length;j1++)
      {
      if(inps2[i1].value <= inps3[j1].value)
      {
        flag1=1;
      }
      }
    }
    console.log(flag);
    console.log(flag1);
    if(flag== 0 && flag1== 0)
    {
      console.log("its done");
//$("#apply_form").submit();
    }
    else
    {
      alert("Applied Amount is greater than your balance.Try again!");
    }
  });

【问题讨论】:

  • 你能把
  • 我需要检查小于或等于兄弟
  • values是需要转成数字的字符串吗?
  • @JasonB Javascript 会自动处理类型转换,所以不可能是这样
  • 是 parseInt 或 parseFloat。 @AbhishekAnand,console.log(“23”

标签: javascript jquery logical-operators


【解决方案1】:

这里的一个大问题是您没有解析数字,但另一个问题是您的循环完全错误。您正在比较 每个 贷方余额与 每个 应用金额,而不是仅比较同一行中的值。您需要将值处理为值行。

此外,由于某种原因,您使用 &lt;=,而您似乎很清楚应该使用 &lt;

这应该可行:

$('#check_bala').click(function(event) {
  event.preventDefault();
  var credits = document.getElementsByName('credit_bala[]');
  var applys1 = document.getElementsByName('apply_amount[]');
  var reces = document.getElementsByName('balance_rece[]');
  var applys2 = document.getElementsByName('apply_amount1[]');
  var flag1 = false;
  var flag2 = false;

  var rowCount1 = Math.min(credits.length, applys1.length)
  for (var i = 0; i < rowCount1; i += 1) {
    if (Number(credits[i].value) < Number(applys1[i].value)) {
      flag1 = true;
    }
  }

  var rowCount2 = Math.min(reces.length, applys2.length);
  for (var i = 0; i < rowCount2; i += 1) {
    if (Number(reces[i].value) < Number(applys2[i].value)) {
      flag2 = true;
    }
  }

  console.log(flag1);
  console.log(flag2);
  if (flag1 || flag2) {
    alert("Applied Amount is greater than your balance.Try again!");
  } else {
    console.log("it's done");
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
  <thead>
    <tr>
      <th>Credit Balance</th>
      <th>Apply Amount</th>
      <th>Balance Rec.</th>
      <th>Apply Amount</th>
    </tr>
  </thead>
  <tr>
    <td><input type="number" name="credit_bala[]" min="0" /></td>
    <td><input type="number" name="apply_amount[]" min="0" /></td>
    <td><input type="number" name="balance_rece[]" min="0" /></td>
    <td><input type="number" name="apply_amount1[]" min="0" /></td>
  </tr>

  <tr>
    <td><input type="number" name="credit_bala[]" min="0" /></td>
    <td><input type="number" name="apply_amount[]" min="0" /></td>
    <td><input type="number" name="balance_rece[]" min="0" /></td>
    <td><input type="number" name="apply_amount1[]" min="0" /></td>
  </tr>
</table>
<input type="button" id="check_bala" value="Submit" />

【讨论】:

  • 如果金额和余额也相等,则仅限完成的情况。你怎么检查那个案子?
  • @KavyaShree 我不明白你在问什么。能举个例子吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-18
  • 2021-12-17
相关资源
最近更新 更多