Membres connectés récemment
[PhpBB2] Vérifier valeur dans InArray (Jquery)
2 participants
Page 1 sur 1 • Partagez
- Version du forum :PhpBB2
- Templates modifiés :oui
- Navigateur :Chrome
Bonjour x)
Je reviens une nouvelle fois vers vous... car je suis en PLS depuis quelques heures... (encore). Ma demande fait suite à la première de ce sujet.
Voici l'état actuel de mon script :
En lisant deux sources jQuery.inArray et cette démo ici, je souhaite vérifier si la variable reason se trouve dans la liste categorie.
Du coup, si j'ai bien compris, la fonction InArray me permet de savoir si un élément est bien dans la tableau.
Sauf que... ça ne semble pas fonctionner... Je ne comprends pas. Je pense avoir correctement rédigé le code au regard de ces différents exemples.
Une idée de mon erreur ?
Bipo.
Je reviens une nouvelle fois vers vous... car je suis en PLS depuis quelques heures... (encore). Ma demande fait suite à la première de ce sujet.
Voici l'état actuel de mon script :
- Code:
$(function() {
if (_userdata["user_id"] > -1) {
$.get("/profile?mode=editprofile", function(data) {
var categorie = [];
$(data).find('#profile_field_12_1').find('input[type="checkbox"]:checked').each(function() {
categorie.push($(this).closest('label').text());
});
var reason = $("#reason").text();
if (jQuery.inArray(reason, categorie) != -1) {
$(".Trigger_Warning").remove();
}
console.log(categorie);
console.log(reason);
});
}
});
En lisant deux sources jQuery.inArray et cette démo ici, je souhaite vérifier si la variable reason se trouve dans la liste categorie.
Du coup, si j'ai bien compris, la fonction InArray me permet de savoir si un élément est bien dans la tableau.
Sauf que... ça ne semble pas fonctionner... Je ne comprends pas. Je pense avoir correctement rédigé le code au regard de ces différents exemples.
Une idée de mon erreur ?
Bipo.
Hello Bipo,
je ne suis pas expert et très à l'aise avec cette méthode mon ami, mais que veux tu faire exactement ,
récupérer les cases cochées et prendre le texte et l’insérer dans le profil des messages ?
Mon ami Arnaud @no_way sera mieux te répondre sur l’utilisation de ce script
Sinon, en épluchant le script et la démo
Cette ligne doit recevoir les textes il me semble:
Comme la démo:
je ne suis pas expert et très à l'aise avec cette méthode mon ami, mais que veux tu faire exactement ,
récupérer les cases cochées et prendre le texte et l’insérer dans le profil des messages ?
Mon ami Arnaud @no_way sera mieux te répondre sur l’utilisation de ce script
Sinon, en épluchant le script et la démo
Cette ligne doit recevoir les textes il me semble:
- Code:
var categorie = [];
Comme la démo:
- Code:
var names = ['vadim', 'thomas', 'tanya', 'timur', 'eve', 'kate', 'karen', 'peter'];
Hello :)
En effet, je cherche à faire une condition sur la liste var categorie.
Même en testant une version simplifiée du script :
La condition ne fonctionne pas.
Je pense que le problème vient du fait que je récupère .text() et non la valeur .val() du tableau...
En effet, je cherche à faire une condition sur la liste var categorie.
Même en testant une version simplifiée du script :
- Code:
$(function() {
if (_userdata["user_id"] > -1) {
$.get("/profile?mode=editprofile", function(data) {
var reason = [];
$(data).find('#profile_field_12_1').find('input[type="checkbox"]:checked').each(function() {
reason.push($(this).closest('label').text());
});
if (reason == "Sexe") {
$(".Trigger_Warning").remove();
}
console.log(reason);
});
}
});
La condition ne fonctionne pas.
Je pense que le problème vient du fait que je récupère .text() et non la valeur .val() du tableau...
Hello Bipo,
ceci veut dire si 1 est égale a 2 alors :
Que représente :
Bref, si tu testes ce script:
tu récupères bien les valeurs dans la partie gauche du profil:
ceci veut dire si 1 est égale a 2 alors :
- Code:
if (reason == "Sexe") {
Que représente :
- Code:
$(".Trigger_Warning").remove();
Bref, si tu testes ce script:
tu récupères bien les valeurs dans la partie gauche du profil:
- Code:
$(function() {
if (_userdata["user_id"] > -1) {
$.get("/profile?mode=editprofile", function(data) {
$(data).find('#profile_field_12_1').find('input[type="checkbox"]:checked').each(function() {
var texte=$(this).closest('label').text();
if (texte)
{
$('#profile_field_12_3').closest('tr').find('td:first').append(texte);
}
console.log(texte);
});});
}
});
Re,
Je vais te détailler le projet. Le but de ce projet est de faire un système de trigger warning (TW) pour mon forum RPG.
Lorsqu'un membre souhaite poster un RP avec un contenu potentiellement sensible, il se doit de le signaler :
Après avoir coché une ou plusieurs option(s), il code est inséré dans la textarea :
Cela la partie fonctionnelle du système.
Maintenant, j'aimerai que le membre puisse personnaliser l'affichage ou non des TW. Par exemple, si un membre ne souhaite pas voir les TW des RP Sexe, il peut le cocher dans son profil afin que cela désactive l'option. C'est le script JS donné plus haut, sur lequel je bute...
Voilà :)
Par contre, je fais les tests sur un forum ModernBB pour ce développement.
Je vais te détailler le projet. Le but de ce projet est de faire un système de trigger warning (TW) pour mon forum RPG.
Lorsqu'un membre souhaite poster un RP avec un contenu potentiellement sensible, il se doit de le signaler :
Après avoir coché une ou plusieurs option(s), il code est inséré dans la textarea :
- Code:
/* CSS Trigger Warning [JS RGPD] */
.postbody .content {
font-size: 1.3rem;
position: relative;
}
.Trigger_Warning{
background: rgba(0,0,0,0.7);
color : #FFF;
z-index:1;
position: absolute;
width:100%;
height: 100%;
text-align: center;
left: 0;
vertical-align: middle;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
border-radius: 20px;
font-size: 30px;
line-height: 1;
}
.content label#id_TW {
background: white;
width: 75px;
height: 50px;
border-radius:10px;
padding: 10px;
}
.content input[id^="trigger"]{display: none;}
.content input[id^="trigger"]:checked ~ :nth-child(2){display:none;opacity:0px;}
- Code:
$(window).load(function() {
var settings = {
img: 'https://i.servimg.com/u/f38/11/01/36/00/warnin11.png',
title: 'Avertissement public (Trigger Warning)'
};
$('.sceditor-group:last').after('<div class="sceditor-group"><a class="sceditor-button sceditor-button-message" title="' + settings["title"] + '"><div style="background:url(' + settings["img"] + ') no-repeat;"></div></a></div>');
$('body').append('<div id="messageList" style="z-index:15;display:none;position:absolute;background:#fff;border:1px solid #ccc;padding:3px;"><ul id="reason" class="reasonClass"><li><label><input type="checkbox" name="reason" value="Sexe"> Sexe</label></li><li><label><input type="checkbox" name="reason" value="Sexe (violence)"> Sexe (violence)</label></li><li><label><input type="checkbox" name="reason" value="Violence (psychologique)"> Violence (psychologique)</label></li><li><label><input type="checkbox" name="reason" value="Violence (physique)"> Violence (physique)</label></li><li><label><input type="checkbox" name="reason" value="Automutilation"> Automutilation</label></li><li><label><input type="checkbox" name="reason" value="Insultes/Vulgarité"> Insultes/Vulgarité</label></li><li><label><input type="checkbox" name="reason" value="Autre : ">Autre :</label><div style="border-style: solid;border-width: 1px 0 0;margin-top: 10px;border-color: #ebebeb;"><input type="text" id="RAinput" name="RAinput" placeholder="à préciser"/></div></li></ul><div style="border-style: solid;border-width: 1px 0 0;margin-top: 10px;border-color: #ebebeb;"><input type="button" value="Publier"></div>');
$('.sceditor-button-message').click(function() {
var display = $('#messageList').css('display');
if (display == 'none') {
var Y = $(this).offset().top;
var X = $(this).offset().left;
$('#messageList').show().offset({
top: Y + 25,
left: X
});
} else {
$('#messageList').hide();
}
});
$("input[type='button']").click(function() {
var reason = [];
var otherreason = $("#RAinput").val();
var id_trigger = Math.floor(Math.random() * 15);
$.each($("input[name='reason']:checked"), function() {
reason.push($(this).val());
});
$('#text_editor_textarea').sceditor("instance").insertText('<!-- BALISE TW A NE PAS SUPPRIMER --><input type="checkbox" id="trigger_' + id_trigger + '" name="scales"><div class="Trigger_Warning TW_' + id_trigger + '"><br>Ce message mentionne du contenu sensible <br />' + reason.join(", ") + otherreason + '<br /><br /><label id="id_TW" for="trigger_' + id_trigger + '">Afficher quand même</label></div><!-- FIN DE BALISE -->');
});
});
Cela la partie fonctionnelle du système.
Maintenant, j'aimerai que le membre puisse personnaliser l'affichage ou non des TW. Par exemple, si un membre ne souhaite pas voir les TW des RP Sexe, il peut le cocher dans son profil afin que cela désactive l'option. C'est le script JS donné plus haut, sur lequel je bute...
Voilà :)
Par contre, je fais les tests sur un forum ModernBB pour ce développement.
Vu que ton sujet mentionné la version Phpbb2, j'ai continué mes essais sur cette dernière.
Alors , j'ai créé deux champs dans le profil Oui ou non.
La case on est cochée par défaut:
Ce qui donne sur le profil:
Puis ce script:
Ou celui-ci pour supprimer aussi le bouton sur l'éditeur:
Ce dernier est fonctionnel mon ami
Alors , j'ai créé deux champs dans le profil Oui ou non.
La case on est cochée par défaut:
Ce qui donne sur le profil:
Puis ce script:
- Code:
$(function() {
if (_userdata["user_id"] > -1) {
$.get("/profile?mode=editprofile", function(data) {
$(data).find('#profile_field_12_1').each(function(){
var oui=$(this).find('input[type="checkbox"]:first:checked').length;
var non=$(this).find('input[type="checkbox"]:last:checked').length;
if (non) {$('.Trigger_Warning').remove();}});});}});
Ou celui-ci pour supprimer aussi le bouton sur l'éditeur:
- Code:
$(function() {
if (_userdata["user_id"] > -1) {
$.get("/profile?mode=editprofile", function(data) {
$(data).find('#profile_field_12_1').each(function(){
var oui=$(this).find('input[type="checkbox"]:first:checked').length;
var non=$(this).find('input[type="checkbox"]:last:checked').length;
if (non) {$('.Trigger_Warning,a.sceditor-button.sceditor-button-message').remove(); }});});}});
Ce dernier est fonctionnel mon ami
Re,
Merci pour cet avancement.
Du coup, je pense plutôt faire une liste que des checkbox afin que les membres évitent de cliquer sur Oui et Non en même temps.
J'ai donc fait une liste Oui/Non.
Je pensais réécrire le code de cette manière :
Mais visiblement, cela ne fonctionne pas. Je désespère à ne pas comprendre pourquoi cela ne fonctionne pas même en suivant x tutoriels...
Merci pour cet avancement.
Du coup, je pense plutôt faire une liste que des checkbox afin que les membres évitent de cliquer sur Oui et Non en même temps.
J'ai donc fait une liste Oui/Non.
Je pensais réécrire le code de cette manière :
- Code:
$(function() {
if (_userdata["user_id"] > -1) {
$.get("/profile?mode=editprofile", function(data) {
$(data).find('#profile_field_7_1').each(function() {
if ($('#profile_field_7_1 option[value="0"]:selected')) {
$('.Trigger_Warning').remove();
}
});
});
}
});
Mais visiblement, cela ne fonctionne pas. Je désespère à ne pas comprendre pourquoi cela ne fonctionne pas même en suivant x tutoriels...
Ok, effectivement on a plus le choix de créer des listes prédéfinies.
La tu mentionnes le choix oui le choix non à cette valeur 1
Ce script devrait fonctionner Bipo:
- Code:
if ($('#profile_field_7_1 option[value="0"]:selected')) {
La tu mentionnes le choix oui le choix non à cette valeur 1
Ce script devrait fonctionner Bipo:
- Code:
$(function() {
if (_userdata["user_id"] > -1) {
$.get("/profile?mode=editprofile", function(data) {
$(data).find('#profile_field_7_1').each(function(){
var non=$(this).find('option[value="1"]:selected').length;
if(non)
{
$('.Trigger_Warning,a.sceditor-button.sceditor-button-message').remove();
}
});});
}
});
Sujets similaires
Créer un compte ou se connecter pour répondre
Vous devez être membre pour répondre.
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum