【问题标题】:Value condition not working as expected价值条件未按预期工作
【发布时间】:2016-05-06 00:32:13
【问题描述】:

我有多个输入,我想设置每个输入部分的最小值。例如,我设置了100 的最小输入值。因此,如果所有输入中任何输入的值都小于100,则会显示错误。否则,如果所有输入的值大于或等于100,则会显示成功消息。

在我的情况下,如果我在输入中输入小于值,则会显示错误,但如果我在其他输入中输入更大的值,则会显示成功消息。

    <div class="color-quantity not-selected-inputs selected-input-wrap">
        <input type="text" class="custom_small" name="custom_small" onkeydown="return myFunction(event);">
    </div>
    <div class="color-quantity not-selected-inputs selected-input-wrap">
         <input type="text" class="custom_medium" name="custom_medium" onkeydown="return myFunction(event);">
    </div>
    <input type="text" class="custom_large" name="custom_large" onkeydown="return myFunction(event);">
</div>
      jQuery('.selected-input-wrap > input').map(function () {
      var total = 0;               
      jQuery('input', this).each(function () {

      total += this.value * 1;
     });

    if (parseInt(total) <= 99) {
        jQuery(".select-quantity").html('<p>Please select at least 100 for each color</p>');
    } else if (parseInt(total) >= 100) {
        jQuery(".select-quantity").html('<p>Success</p>'); 
    }

请查看代码并帮助我找出问题

【问题讨论】:

  • 你想在哪里验证?
  • @dlopez 让我试试这个..
  • 另外,你正在关闭一个你没有打开的 div
  • 试试这个选择器 jQuery('.selected-input-wrap>input')。据我所知,&lt;div&gt; 标签没有任何价值。
  • 你为什么使用map(),它用于从一组匹配的元素创建一个数组。我认为您应该考虑改用each()。您还应该将选择器更改为.selected-input-wrap input,并且您需要遍历所有元素以获取total 之前您对if 条件执行任何操作。

标签: javascript jquery if-statement


【解决方案1】:

有几个问题。

  • 您应该在循环外声明total,否则在每次迭代时将其重置为0
  • 您还应该使用单个each() 调用来循环一组元素,因为map() 旨在用于从这些元素创建一个数组。
  • 将值添加到total时,只需调用一次parseInt()
  • 您的else if 条件是多余的,可以仅替换为else,甚至可以替换为如下所示的三元。

试试这个:

jQuery(function($) {
    var total = 0;    
    $('.selected-input-wrap > input').each(function () {          
        total += parseInt(this.value, 10);
    });

    var msg = total >= 100 ? '<p>Success</p>' : '<p>Please select at least 100 for each color</p>';
    $(".select-quantity").html(msg); 
});

【讨论】:

    【解决方案2】:

    total 变量循环遍历所有输入,并且根据您的代码仅返回一次。尝试在 if-else 条件后关闭 each 循环并检查一次。

     jQuery('.selected-input-wrap > input').map(function () {
        var total = 0;               
        jQuery('input', this).each(function () {
          total += this.value * 1;
          if (parseInt(total) <= 99) {
              jQuery(".select-quantity").html('<p>Please select at least 100 for each color</p>');
          } else if (parseInt(total) >= 100) {
              jQuery(".select-quantity").html('<p>Success</p>'); 
          }
        });
     })
    

    【讨论】:

      【解决方案3】:

      您可以使用以下 jquery 代码:-

      jQuery('.selected-input-wrap > input').map(function () {
            var total = 0;               
            jQuery('input').each(function () {
      
               total = $(this).val();
      
               if (parseInt(total) <= 99) {
                  jQuery(".select-quantity").html('<p>Please select at least 100 for each color</p>');
               }
               else if (parseInt(total) >= 100) {
                  jQuery(".select-quantity").html('<p>Success</p>'); 
               }
           });
      });
      

      也许对你有帮助。

      【讨论】:

      • 对 OPs 原始代码为什么不起作用以及为什么这样可以解决问题的描述对学习者有很大帮助。
      • 获取输入标签的值,我们必须使用 .val() 而不是 value
      【解决方案4】:

      试试这个。

      var MIN = 100, value = 0;               
      
      jQuery('.selected-input-wrap > input').each(function (idx,el) {
          value += parseInt(el.value);
      });
      
      if (value < MIN) {
              jQuery(".select-quantity").html('<p>Please select at least 100 for each color</p>');
      } else {
          jQuery(".select-quantity").html('<p>Success</p>'); 
      }
      

      【讨论】:

        【解决方案5】:

        在我的情况下,我已经解决了如下问题:

               var total = 0;
               var array_total = new Array();
               jQuery('.selected-input-wrap > input').each(function(index, value) {
                jQuery( ".right-minimu").remove();
                var total = jQuery(this).val();
                console.log("Total Value  : " + total);
                if (total != '') {
        
                    var t_array = array_total.push(total);
                }
                console.log('Total Array : ' + array_total);
        
            });
        
            /******** make array unique *************/
        
                        var unique_total = [];
            jQuery.each(array_total, function(i, el) {
                if (jQuery.inArray(el, unique_total) === -1)
                    unique_total.push(el);
            });
                var current_urls = jQuery(location).attr('href');
                var rest = current_urls.substr(37, 9); //
                var current_urls = jQuery(location).attr('href');
                var rest_2 = current_urls.substr(37, 18);
                var rest_3 = current_urls.substr(37, 15);
                var rest_4 = current_urls.substr(37, 8);
        
            jQuery.each(unique_total, function(key, total) {
        
                for (var i = 0; i <= unique_total.length; i++) {
                 if(rest == "bracelets") {  
                    if (parseInt(unique_total[i]) <= 99) {
                        jQuery(".select-quantity").css("display", "block");
                        jQuery(".select-quantity").html('<p>Please select at least 100 for each color</p>');
                        jQuery( "#order-overview-table table" ).css("display" , "none") ;
                        jQuery( "#order-overview-table").append("<p class='right-minimu'>Please select at least 100 for each color</p>") ;
                        jQuery('.btn-cart').removeAttr("onclick");
        
                        return false;
        
                    } else if (parseInt(unique_total[i]) >= 100) {
        
                        jQuery(".select-quantity").css("display", "none");
                        jQuery('.btn-cart').attr('onClick', 'productAddToCartForm.submit(this);');
                        jQuery(".select-quantity").html('<p>Products Added</p>').delay(4000);
        
                    }
                    }
        

        【讨论】:

          猜你喜欢
          • 2021-12-13
          • 2015-04-21
          • 1970-01-01
          • 1970-01-01
          • 2016-08-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-10-23
          相关资源
          最近更新 更多