Probleme javascript Chrome
Posté : 24 juin 2010, 14:42
Bonjour,
j'ai un problème qui commence à me rendre fou ....
J'ai un fichier javascript, qui me sert à faire l'équivalent d'une combo box, mais de manière plus esthétique.
Ces combos fonctionnent très bien sur firefox et ie7 ie8, mais je viens de me rendre compte que cela faisait exploser chrome et safari.
Pour les courageux je donne le code de ce fichier que j'utilise tout au long de mon site :
Il s'utilise de la manière suivante :
il suffit de déclarer dans le code html :
<div> global
1 input
1 input hidden
div avec ul > li
</div> global
Si quelqu'un a ne serait-ce qu'une piste ce serait vraiment génial, car j'ai beaucoup de mal à debugger le javascript.
D'avance merci.
j'ai un problème qui commence à me rendre fou ....
J'ai un fichier javascript, qui me sert à faire l'équivalent d'une combo box, mais de manière plus esthétique.
Ces combos fonctionnent très bien sur firefox et ie7 ie8, mais je viens de me rendre compte que cela faisait exploser chrome et safari.
Pour les courageux je donne le code de ce fichier que j'utilise tout au long de mon site :
Il s'utilise de la manière suivante :
il suffit de déclarer dans le code html :
<div> global
1 input
1 input hidden
div avec ul > li
</div> global
Code : Tout sélectionner
jQuery.fn.choixliste = function(settings)
{
return this.each( function()//do it for each matched element
{
settings = jQuery.extend(//provide default settings
{
after : null
} , settings);
//this is the original input
var bloc = $(this);
var textInput = bloc.children(':input')[0];
var valueInput = bloc.children(':input')[1];
var boite = $('div',this);
var blurHide = false;
$(bloc).click(function(e){combo_Deroule();});
$('ul > li',boite).each(function (i) {
$(this).click(function(e){choix(this,e);});
});
$(textInput).blur(function(){
blurHide = true;
window.setTimeout(function() {
if ((boite.css("display") == 'block') && (blurHide)){
boite.hide("blind",{},400);
bloc.removeClass('activ').addClass('desactiv');
}
}
,350);
});
function choix(objet,e){
blurHide = false;
$(textInput).val(objet.innerHTML);
$(valueInput).val($(objet).attr('key'));
combo_Deroule();
e.stopPropagation();
if (typeof settings.after == "function")
{
settings.after();
}
return false;
}
function combo_Deroule(){
var options = {};
var etat = boite.css("display");
if (etat == 'none'){
textInput.focus();
bloc.removeClass('desactiv').addClass('activ');
boite.css('width',bloc.width()-3);
boite.show("blind",options,400);
blurHide = false;
}
if ((etat == 'block')){
blurHide = false;
boite.hide("blind",options,400);
bloc.removeClass('activ').addClass('desactiv');
}
}
});
};
D'avance merci.