Bonjour,

Voila je rencontre un petit problème avec mon code.
Je me suis fortement inspiré pour limiter mes inputs, du tutoriel sur comment limiter le choix de checkbox.
Mais mon script bloque tous mes inputs.
Merci pour votre aide!

Ce que je fais

Décrivez ici votre code ou ce que vous cherchez à faire
Voici mon script:

    $(':input').click(function(event) {

        limit = 3;
        nb=$(":input").length;
        if(nb>limit){
          $(this).attr("disabled", true);
        }
    });


### Ce que je veux

Limiter le choix de mes inputs

### Ce que j'obtiens

il me bloque tous mes inputs

7 réponses


Salut,

Est-ce qu'au moins tu as compris le code que tu as écrit ?
A aucun moment tu ne cibles les inputs checked, là tu cibles TOUTES les inputs.

var $checkboxes = $('input[type="checkbox"]'),
    limit = 3, checked = 0;

$checkboxes.click(function() {  
  checked = $checkboxes.filter(':checked').length;

  $checkboxes.removeAttr("disabled");

  checked >= limit && ($checkboxes.not(':checked').attr("disabled", "disabled"));
});

Voici une démo (je l'ai fait vite fait ce n'est pas optimisé) : http://codepen.io/betaweb/pen/qZVQer

Pour cibler on peut utiliser event.target

$(event.target).attr("disabled", true);

@Huggy ça ne fonctionnera tout de même pas puisqu'il ne filtre pas les inputs checked ;)

Autre piste
si tu utilises la forme $('input').on("click", function ....
le this indiquera bien la bonne cible

@betaWeb , ne sachant pas ce qu'il veut faire ...
là son problème c'est que tous les inputs sont disabled à la fois, pour moi c'est juste le this qui n'est pas correct d'où mes deux réponses.

Regarde la solution que je lui ai donné, elle fonctionne très bien ;)
Il veut juste que si plus de x inputs sont checked, les autres se disabled.

obenamar
Auteur

Merci pour votre aide