justine
-
30 mai 2018 à 20:12
Lord Zero
Messages postés459Date d'inscriptionlundi 18 octobre 2010StatutMembreDernière intervention15 juin 2018
-
14 juin 2018 à 08:38
Bonjour, j vais essayer d'être claire
j'ai ce script en jquery, mais vous allez me dire c'est trop bordel et trop long etc..
c'est pour celà, je viens vous voir si quelqu'un peut m'aidé à refaire un code très simple
voila le code jquery
// JavaScript Document//Toggle de la listevar obj, selectVal ={},index_parent, strings ={}, target;
$(".multiple-choix").on("click",".hida1",function(){
$(".mutliSelect1 ul").not($(".mutliSelect1 ul", $(this).parent())).slideUp('500');
$(".mutliSelect1 ul", $(this).parent()).slideToggle('500');
target = $(this).parent();})//Reporter valeur directement après on "click".on("change","input[type='checkbox']",function(){//index_parent = $(this).parents("dl").index(".multiple-choix");
obj = $(this).parents('.multiple-choix').find(".hida1 span");var iterator =parseInt($(this).parents("dl").index(".multiple-choix"));if(strings[iterator]==undefined)
strings[iterator]={};if(selectVal[iterator]==undefined)
selectVal[iterator]="";
$(this).each(function(){//pour chaque checkbox dont la valeur est trueif($(this).is(':checked')){
strings[iterator][$(this).val()]= $(this).val();}else{delete(strings[iterator][$(this).val()]);}if(selectVal[iterator]=="")
selectVal[iterator]= obj.text();var default_text = selectVal[iterator];if(Object.keys(strings[iterator]).length <1){
strings[iterator][default_text]= default_text;}else{delete(strings[iterator][default_text]);}var result =joinObj(sortObj(strings[iterator]),", ");var optionnal_panel = target.find("p.choix-membre");var optionnal_panel2 = $("p.choix-membre[data-for-select=\""+ default_text +"\"");if(optionnal_panel.length){
obj.text(default_text);
optionnal_panel.text(result);}elseif(optionnal_panel2.length){
obj.text(default_text);
optionnal_panel2.text(result);}else
obj.text(result);/*console.log(" index_parent :" + index_parent + " nodeName :" + obj.get(0).nodeName + " selectVal :" + selectVal);*/
$(this).parents('.multiple-choix').trigger("value_changed",[result]);});});
$(".choix").each(function(){var li = $(this).find("li");var name = $(this).data("name");
li.each(function(){
$(this).css("cursor","pointer");
$(this).prepend("<input type=\"checkbox\" name=\""+name+"\" value=\""+$(this).text()+"\" style=\"display:none;\" />");});});
$(".choix").on("click",".hida1",function(){
$(".mutliSelect1 ul").not($(".mutliSelect1 ul", $(this).parent())).slideUp('500');
$(".mutliSelect1 ul", $(this).parent()).slideToggle('500');
target = $(this).parent();})
$('.choix').on("click","li",function(){
console.log("j");var name = $(this).parents('.choix').data("name");var val = $(this).text();var hida = $(this).parents('.choix').find(".hida1");var checkbox = $(this).find("input[name=\""+name+"\"][value=\""+val+"\"][type=checkbox]");
console.log(checkbox);
hida.text(val);
$(this).find("input[type=checkbox]").each(function(){
$(this).prop("checked",false);});
checkbox.prop("checked",true);
hida.trigger("click");});
$(".multiple-choix").on("value_changed",function(e,value){
$(".choix-membre").text(value);});functionjoinObj(a, delemiter){var out =[];for(var key in a){
out.push(a[key]);}return out.join(delemiter);}functionsortObj(obj){"use strict";functionObj2Array(obj){var newObj =[];for(var key in obj){if(!obj.hasOwnProperty(key))return;var value =[key, obj[key]];
newObj.push(value);}return newObj;}var sortedArray =Obj2Array(obj).sort(function(a, b){if(a[1]< b[1])return-1;if(a[1]> b[1])return1;return0;});functionrecreateSortedObject(targ){var sortedObj ={};for(var i =0; i < targ.length; i++){
sortedObj[targ[i][0]]= targ[i][1];}return sortedObj;}returnrecreateSortedObject(sortedArray);}
<divclass="global-select-normal choix select1"><spanclass="hida1 icon-select">choisit un chiffre</span><navclass="mutliSelect1"><ul><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li></nav></div></div>
je vous donne une explication
le code html qui fonctionne très bien et ca consiste si on choisis par exemple le chiffre 4 le chiffre se met automatiquement
<spanclass="hida1 icon-select">choisit un chiffre</span>
ensuite j'aimerais bien avec le même code html
<divclass="global-select-normal choix select1"><spanclass="hida1 icon-select">choisit un chiffre</span><navclass="mutliSelect1"><ul><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li></nav></div></div>
c'est qu'on puisse cliquer sur 2 et 3 et qu'il se mette une couleur pour dire qu'on choisit