Bonjour,
J'ai un soucis pour faire des boutons +/- qui gère la capacité à rester enfoncés sous IE.
En effet, autant mon script fonctionne très bien sous firefox et chrome, autant sous ie, il fonctionne lentement... Si on clique deux fois de suite avec moins d'une seconde d'écart (environ), il ne prend pas en compte le deuxième click, il fait comme si il ne déclenchait pas l'événement mouse down.
La fonction qui initialise les événements sur les plus et moins :
Donc ma fonction plus
et onpage load
et la variable global root qui possède donc l'ensemble du code et qui est défini avec ces variable par défaut:
Je ne sais pas si vous avez déjà rencontré ce problème, mais j'avoue que je ne comprends pas trop... C'est comme si IE avait du mal à suivre le rythme...
Modifié par RedPhenix (15 Nov 2012 - 14:03)
J'ai un soucis pour faire des boutons +/- qui gère la capacité à rester enfoncés sous IE.
En effet, autant mon script fonctionne très bien sous firefox et chrome, autant sous ie, il fonctionne lentement... Si on clique deux fois de suite avec moins d'une seconde d'écart (environ), il ne prend pas en compte le deuxième click, il fait comme si il ne déclenchait pas l'événement mouse down.
La fonction qui initialise les événements sur les plus et moins :
/**
* Add events on + - buttons
*/
'applyPlusMoinsButtonEvents':function(parent_selector,callback)
{
root.log('applyPlusMoinsButtonEvents'+parent_selector);
jQuery(parent_selector+' .plus').mousedown(function(event){
root.plus(this,callback,true);
});
jQuery(parent_selector+' .plus').click(function(event){
event.preventDefault();
});
jQuery(parent_selector+' .moins').mousedown(function(event){
root.moins(this,callback,true);
});
jQuery(parent_selector+' .moins').click(function(event){
event.preventDefault();
});
}
Donc ma fonction plus
'plus':function(object,callback,first){
root.upcallback = callback;// save callback to reuse when mouse up
var current_input = jQuery('#'+jQuery(object).data('applyfor')).get(0);//get the input the + button apply for
//if max value defined
if (typeof jQuery('#'+jQuery(object).data('applyfor')).data('maxvalue') != 'undefined' ){
if (parseInt(current_input.value)+1 <= jQuery('#'+jQuery(object).data('applyfor')).data('maxvalue')){
current_input.value = parseInt(current_input.value)+1;
}
else{
current_input.value= jQuery('#'+jQuery(object).data('applyfor')).data('maxvalue');
}
}
else{
current_input.value = parseInt(current_input.value)+1;
}
if (typeof first != 'undefined' && first == true){
root.timeout = window.setTimeout(function(){
root.plus(object,callback);
}, 500);
}
else{
root.timeout = window.setTimeout(function(){
root.plus(object,callback);
}, 200);
}
},
et onpage load
document.body.onmouseup=function(event){
if (root.timeout){
clearTimeout(root.timeout);
root.timeout=false;
if (root.upcallback){
root.upcallback();
root.upcallback=false;
}
else{
root.log('NO upcallback');
}
}
};
et la variable global root qui possède donc l'ensemble du code et qui est défini avec ces variable par défaut:
timeout:false,
upcallback : false,
Je ne sais pas si vous avez déjà rencontré ce problème, mais j'avoue que je ne comprends pas trop... C'est comme si IE avait du mal à suivre le rythme...
Modifié par RedPhenix (15 Nov 2012 - 14:03)