如何仅在填写所有文本框时计算文本框值?

时间:2016-01-10 20:03:36

标签: javascript jquery html

我根据4个文本框的值进行了一些计算,但是我想要的只是当4个文本框有值时计算它。

听起来很简单,但只有当上述条件为真并且在每个键盘上重新计算时,我才能想到运行计算的方法。

$(window).load(function(){
     $('#quantity, #length, #width, #height, #weight').keyup(function () {
         $('#volumetric_weight').val($('#length').val()*$('#width').val()*$('#height').val()*$('#quantity').val()/5000);

3 个答案:

答案 0 :(得分:2)

尝试使用required属性,仅在每个input有效时进行计算

$(function() {
  var inputs = $("form input"), product = 1;
  inputs.on("input", function() {
    if (document.forms["calculate"].checkValidity()) {
      inputs.each(function(i, el) {
        product *= el.value;
      });
      $("#volumetric_weight").val(product / 5000);
      product = 1;
    }
  })
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js">
</script>
<form name="calculate">
  <input type="number" id="quantity" required />
  <input type="number" id="length" required />
  <input type="number" id="width" required />
  <input type="number" id="height" required />
  <input type="number" id="weight" required />
</form>

<input type="text" value="" id="volumetric_weight" />

jsfiddle https://jsfiddle.net/b185Lh80/

答案 1 :(得分:1)

您需要首先检查输入字段是否有值(所有这些),然后执行您的代码。 在你的问题中,你提到4个文本框,但在你的代码中你有5个;) 像这样的东西

    $(window).load(function(){

         $('#quantity, #length, #width, #height, #weight').keyup(function () {
if(!$('#quantity').val() || !$('#length').val() || !$('#width').val() || !$('#height').val() || !$('#weight').val()) return;

             $('#volumetric_weight').val($('#length').val()*$('#width').val()*$('#height').val()*$('#quantity').val()/5000);

答案 2 :(得分:0)

您可以在计算之前测试所有值是否存在:

Status: active

To                         Action      From
--                         ------      ----
3838/tcp                   ALLOW       Anywhere
3838                       ALLOW       Anywhere
80                         ALLOW       Anywhere
3838/tcp                   ALLOW       Anywhere (v6)
3838                       ALLOW       Anywhere (v6)
80                         ALLOW       Anywhere (v6)

请注意,我使用了@Mathew的建议:将$(window).load(function(){ $('#quantity, #length, #width, #height, #weight').change(function () { var len = $('#length').val(); width = $('#width').val(); height = $('#height').val(); qty = $('#quantity').val(); if (!!len && !!width && !!height && !!qty) { $('#volumetric_weight').val(len * width * height * qty / 5000); } }); }) 替换为change(),以便在用户过去时也能抓住。