值条件未按预期工作

时间:2016-05-03 11:33:57

标签: javascript jquery if-statement

我有多个输入,我想设置每个输入部分的最小值。例如,我设置了最小输入值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>'); 
    }

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

5 个答案:

答案 0 :(得分:1)

有几个问题。

  • 您应该在循环外声明<link rel="stylesheet" type="text/css" href="~/Content/front-end-theme/rs-plugin/css/settings.css" media="screen" /> <link rel="stylesheet" type="text/css" href="~/Content/front-end-theme/css/bootstrap.css"> <link rel="stylesheet" type="text/css" href="~/Content/front-end-theme/css/animate.css"> <link rel="stylesheet" type="text/css" href="~/Content/front-end-theme/css/prettyPhoto.css"> <link rel="stylesheet" type="text/css" href="~/Content/front-end-theme/css/carousel.css"> <link rel="stylesheet" type="text/css" href="~/Content/front-end-theme/style.css"> <!-- COLORS --> <link rel="stylesheet" type="text/css" href="~/Content/front-end-theme/css/custom.css"> ,否则在每次迭代时将其重置为total
  • 您还应该使用单个0调用来循环遍历一组元素,因为each()旨在用于从这些元素创建数组。
  • 将值添加到map()
  • 时,您只需拨打parseInt()一次
  • 您的total条件是多余的,只能由else if替换,甚至可以替换为以下三元。

试试这个:

else

答案 1 :(得分:0)

您可以使用以下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>'); 
         }
     });
});

它可能对你有帮助。

答案 2 :(得分:0)

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

 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 :(得分:0)

试试这个。

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>'); 
}

答案 4 :(得分:0)

在我的案例中,我已经解决了以下问题:

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

            }
            }