Compter le nombre de CHECKBOX cochées
Bonjour,
je sais que ce genre de question a déjà été posé, mais je n'arrive vraiment pas à appliquer ce que j'ai trouvé sur le net.
Actuellement j'ai des checkbox (5), qui sont créés à partir d'un mock (oui, le but c'est de comprendre et manipuler).
Mon code donne ça actuellement :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| <div
v-for="item in getItems()"
:key="item"
>
<input
:id="item.id"
slot="input"
type="checkbox"
:name="item.code"
:value="item.libelle"
:checked="checked"
>
<label
slot="label"
:for="item.id"
> {{ item.libelle }} </label>
</div>
...
<div v-show="messageMini">{{ $t('LIMITE_MINI') }}</div >
<div v-show="messageMax">{{ $t('LIMITE_MAX') }}</div > |
import du mock et du model pour remplir les attributs des checkbox
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| export default class ModalFiltre extends Vue {
@Prop()
private checked!: boolean;
private messageMini = false;
private messageMax = false;
//ici c'est le mock
getItems(): FiltreData[]{
return [truc1,
truc2,
truc3,
truc4,
truc5];
}
//ici la fonction qui doit compter les checkbox
private checkItem() {
let countItem = 0;
for(let item in this.getItems){
if(this.checked){
countItem++;
}
}
console.log('countItems = ' + countItem);
//si case cochée < 1 => messageMini
//si case cochée > 4 => messageMax
} |
J'arrive donc pas à trouver un moyen pour que la fonction compte le nombre de checkbox cochée.
Le but étant que s'il n'y en a pas => j'affiche le message : nombre insuffisant
s'il y en a trop j'affiche un message nombre max dépassé.
Si je pouvais avoir juste un coup de main, c'est tout en Typescript.
Merci d'avance
petite avancée ... mais j'ai des message dans la console ?
J'ai un peu avancé sur le check des checkbox, mais j'ai pein de message dans ma console et je ne comprends pas trop pourquoi ...
Le code pour check-in
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
private checkItems(){
let constantes = document.getElementsByTagName('ici il y a le nom du Design System qui est schématisée par la balise div');
let countItem = 0;
for(let i = 0; i < constantes.length; i++){
if(this.checked){
countItem++;
} else {
countItem--;
}
}
console.log('countItems = ' + countItem);
} |
Mais je ne peux pas tester à cause de message dans ma console :
un premier :
Citation:
[Vue warn]: Avoid using non-primitive value as key, use string/number value instead.
un deuxième :
Citation:
[Vue warn]: Duplicate keys detected: '[object Object]'. This may cause an update error.
???
Je pense que les messages m'empêchent de tester.
Autre problème, il faut que le compte soit synchronisé, puisque si j'ai trop de case cochées, il faut que le bouton de sauvegarde soit disabled.
=============================================
Alors rectification, je peux tester, mais en fait, il ne rentre jamais dans la boucle if(this.checked).
Un idée sur le comment le faire entrer dedans ?