12-08-2010, 02:13 PM
(Modification du message : 12-08-2010, 02:17 PM par Sephi-Chan.)
(12-08-2010, 12:53 PM)garf a écrit :(12-08-2010, 11:52 AM)Sephi-Chan a écrit : Je crois que tu n'as pas lu la solution que je proposais. Je me cite :J'avais du lire que la première partie de ta réponse. Cependant ton last_form_submitted_at, j'aime pas c'est trop long comme nom de champ ^^
Je l'utiliserai plus pour imposer un délai plutôt que pour empêcher un resoumission de formulaire. ca fait faire plus d'opération.
t1 - t2 > X <=> comparaison des timestamps
T1 != T2 <=> comparaison de token
La comparaison de timestamp permet plus de chose mais elle est plus gourmande en ressources (je pinaille pour rien du tout mais répond "correctement" à la question )
(12-08-2010, 11:52 AM)Sephi-Chan a écrit : Et Javascript est donc bien un bonus d'utilisabilité.:respect: :good:, en gros j'approuve => tu devrais changer le Chan en Sama ou Sensei
C'est vrai que c'est du pinaillage pure dans le seul but d'avoir le dernier mot… D'autant que ta solution est forcément plus lente que la comparaison d'entiers lus dans le système (la génération du token, son envoi, la comparaison des chaînes, le retour éventuel).
Et puis, la question initiale portait sur la façon d'empêcher les clics multiples de nuire (et le simple disabled en Javascript, le serveur n'est même pas appelé dans 98% des cas).
Cela dit, merci pour la suggestion de nom, mais je préfère conserver l'actuel.
(12-08-2010, 01:05 PM)php_addict a écrit : voici pour le JS:
function DisabledInput()
{
setTimeout(DisabledInputNow,1);
function DisabledInputNow()
{
tag=document.getElementsByTagName('input')
for(i=0;i<tag.length;i++)
{
if(tag[i].getAttribute('type')=='submit')
{
tag[i].disabled=true;
}
}
}
}
Je trouve cette fonction inutilement compliquée et je verrais plutôt quelque chose comme :
function disableInputForDuration(elementId, duration){
var element = document.getElementById(elementId);
element.disabled = true;
setTimeout(function(){ element.disabled = false; }, duration);
}
Et ça s'utilise comme ça :
Code :
<form action="" method="post" onsubmit="disableInputForDuration('submit_button', 2000); event.preventDefault();">
<input type="submit" id="submit_button" />
</form>
Sephi-Chan