Bonjour, je veux afficher le bouton uniquement lorsque la valeur ne dépasse pas 25. Mon code ressemble à ceci. La valeur de mon élément de liste de produits est de 25. Et à chaque clic, j'ajoute 6 à mon élément input[name='skip]. Qu'est-ce que je fais mal? Notez que mon input[name='skip] augmente à chaque clic.

$(function () {
    $("#button-submit").click(function () {
        var $productList = $(".product-list");
        var $value = $("input[name='skip']");
        $value.val(parseInt($value.val()) + 6);
        if (parseInt($productList.val()) >= parseInt($value.val())) {
            $("#button-submit").hide();
        }
    });
});
1
Hubert Łachecki 20 nov. 2018 à 17:54

3 réponses

Meilleure réponse

Votre condition est incorrecte. Vous devez donc utiliser < au lieu de >=

$("#button-submit").click(function () {
  var $productList = $(".product-list");
  var $value = $("input[name='skip']");
  $value.val(parseInt($value.val()) + 6);
  if (parseInt($productList.val()) < parseInt($value.val())) {
    $("#button-submit").hide();
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" class="product-list" value="25">
<input type="text" name="skip" value="0">
<button type="button" id="button-submit">Click</button>

Votre code pourrait également être plus simple

$("#button-submit").click(function () {
  var $value = $("input[name='skip']");
  $value.val(+$value.val() + 6);
  if (+$(".product-list").val() < +$value.val()) {
    $(this).hide();
  }
});
1
Mohammad 20 nov. 2018 à 15:26

Vous semblez avoir une erreur avec le sélecteur

var $productList = $(".product-list']");

Devrait probablement être quelque chose comme

var $productList = $(".product-list");

Edit: je pense que vous voudrez peut-être utiliser

$(".product-list").length au lieu de $(".product-list").val() car il ressemble à sa collection d'éléments.

Je suppose que Thomas n'a pas fourni le balisage complet.

1
manWe 20 nov. 2018 à 15:00

Cherchez-vous à obtenir le nombre d'éléments de liste? J'ai un échantillon pour compter les éléments de la liste ci-dessous. De plus, j'ai remarqué que la comparaison de la liste de produits à la valeur était des mots arrières, j'ai donc inversé l'opérateur moins que par opposition à supérieur à.

$(function() {
  $("#button-submit").click(function() {
   
    // get number of list items
    var $productList = $('.product-list').children('li').length;
    var $value = $("input[name='skip']");
    //alert("value: "+$value.val());
    //alert("value: "+$value.val()+" productlist: " + $productList);
    $value.val(parseInt($value.val()) + 6);

    if ($productList <= parseInt($value.val())) {
      $("#button-submit").hide();
    }

  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input name="skip" value=0>
<button id="button-submit">Click</button>
<div class="product-list"></div>

<ul class="product-list">
  <li>Apple</li>
  <li>Banana</li>
  <li>Carrot</li>
  <li>Pear</li>
  <li>Cherry</li>
  <li>Watermelon</li>
  <li>Lemon</li>
  <li>Kiwi</li>
  <li>Grape</li>
</ul>
1
jeffld 20 nov. 2018 à 15:29