jQuery仅在至少一个输入字段的值大于0

时间:2018-10-14 16:57:31

标签: jquery validation

仅在至少一个字段的值大于0时,我才尝试提交表单

所有输入字段的名称和类别均与产品循环相同。所有字段的默认值为0,因此至少一个输入字段的值应大于0。

这是我的代码的样子。

$('#form').on('submit', function(e) {
  $('input.test').each(function() {
    if ($(this).val() == 0) {
      return false;
    }
  });
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form id="form">
  <table>
    <tbody>
      <tr>
        <td><input class="test" name="price[]" type="text"></td>
      </tr>
      <tr>
        <td><input class="test" name="price[]" type="text"></td>
      </tr>
      <tr>
        <td><input class="test" name="price[]" type="text"></td>
      </tr>
      <tr>
        <td><input class="test" name="price[]" type="text"></td>
      </tr>
      <tr>
        <td><input type="submit"></td>
      </tr>
    </tbody>
  </table>
</form>

2 个答案:

答案 0 :(得分:0)

尝试减少:

$('#form').on('submit', function(e) {
  var sum = $('input.test').toArray().reduce(function(sum, element) {
    var num = isNaN(element.value)?0:+element.value; // find the number
    return sum + num;
  }, 0);
  console.log(sum);
  if (sum===0) e.preventDefault(); // stop submission
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form id="form">
  <table>
    <tbody>
      <tr>
        <td><input class="test" name="price[]" type="text"></td>
      </tr>
      <tr>
        <td><input class="test" name="price[]" type="text"></td>
      </tr>
      <tr>
        <td><input class="test" name="price[]" type="text"></td>
      </tr>
      <tr>
        <td><input class="test" name="price[]" type="text"></td>
      </tr>
      <tr>
        <td><input type="submit"></td>
      </tr>
    </tbody>
  </table>
</form>

如果您不想遍历所有事物(即,在填满某些内容后立即离开,则可以使用 确实允许提交1,a,c

$('#form').on('submit', function(e) {
  var sum = 0;
  $('input.test').each(function() {
    sum += isNaN(this.value)?0:+this.value; // find the number
    return !sum; // leave the each when it is truthy
  });  
  console.log(sum);
  if (sum===0) e.preventDefault(); // stop submission
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form id="form">
  <table>
    <tbody>
      <tr>
        <td><input class="test" name="price[]" type="text"></td>
      </tr>
      <tr>
        <td><input class="test" name="price[]" type="text"></td>
      </tr>
      <tr>
        <td><input class="test" name="price[]" type="text"></td>
      </tr>
      <tr>
        <td><input class="test" name="price[]" type="text"></td>
      </tr>
      <tr>
        <td><input type="submit"></td>
      </tr>
    </tbody>
  </table>
</form>

答案 1 :(得分:0)

存储一个布尔值以跟踪是否应该继续提交,如果不符合条件,请使用preventDefault取消提交表单:

$('#form').on('submit', function(e) {
  let proceed = false;
  
  $('input.test').each(function() {
    if (!isNaN(this.value) && this.value > 0){
      proceed = true;
      return false;
    }
  });
  
  !proceed && e.preventDefault()
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form id="form">
  <table>
    <tbody>
      <tr>
        <td><input class="test" name="price[]" type="text"></td>
      </tr>
      <tr>
        <td><input class="test" name="price[]" type="text"></td>
      </tr>
      <tr>
        <td><input class="test" name="price[]" type="text"></td>
      </tr>
      <tr>
        <td><input class="test" name="price[]" type="text"></td>
      </tr>
      <tr>
        <td><input type="submit"></td>
      </tr>
    </tbody>
  </table>
</form>