11521 sujets

JavaScript, DOM et API Web HTML5

Mon objectif est de désactiver l'actualisation de ma page web aprés que je désactive mon formulaire : J'ai utilisé le script suivant mais il ne marche pas. Avez vous une idée comment je peux le faire. Merci d'avance Smiley smile
<SCRIPT language="Javascript">
function Desactiv() {
var els = document.getElementsByTagName('input');
for(i = 0 ; i < els.length ; i++) {
els.disabled =true;

}
window.onload = function () {
document.onkeydown = function (e) {
return (e.which || e.keyCode) != 116;
};
}
}
</SCRIPT>
tu peux bloquer les buttons F5 ou CTRL+R etc.... mais pas l'actualisation propre au navigateur.
JENCAL, oui, selon ce que j'ai lus je peux pas faire ça. Donc y a t'il une solution pour bloquer l'envoi dans un formulaire aprés une durée. Merci Smiley smile
Modifié par developeurdusamedi (03 Jan 2019 - 15:25)
J'ai trouvé cette solution mais elle ne marche pas avec mon formulaire Smiley confus
onsubmit="return false"

Modifié par developeurdusamedi (03 Jan 2019 - 15:28)
developeurdusamedi a écrit :
selon ce que j'ai lus je peux pas faire ça. Smiley smile

ça quoi ? bloquer l'actualisation d'une page ? quel actualisation ? celle via clavier/raccourcis ? celle via clic sur le button "actualisé" ? je ne comprend pas soit plus précis.

developeurdusamedi a écrit :
Donc y a t'il une solution pour bloquer l'envoi dans un formulaire aprés une durée. Merci


"bloquer l'envoi dans un formulaire aprés une durée" je n'ai pas compris cette phrase, utilise un exemple simple et concret merci à toi.
selon ce que j'ai lus je peux pas faire ça: le ça c'est désactiver l'actualisation dans un navigateur web Smiley biggrin
Donc y a t'il une solution pour bloquer l'envoi dans un formulaire aprés une durée: c'est à dire si j'ai une formulaire à travers lequel je fais l'envoi des données à une base de données. aprés 3 jours quand je remplis le formulaire et je clique sur le bouton envoyer je peux plus
Je vais expliquer mon objectif derriére tout ça: à travers mon application je fais l'envoie d'un lien d'un formulaire pour les clients. Je veux donner que 3 jours au client pour modifier le formulaire. Aprés ces trois jours il ne peut envoyer les données avec ce formulaire.
Modifié par developeurdusamedi (03 Jan 2019 - 16:19)
pour le 1er point, je reviens à ce que j'ai dis, tu ne peux qu'intervenir au niveau des actions "clavier" pour bloquer l'actualisation, tu ne pourras pas bloquer l'actualisation si l'utilisateur "clic" sur 'rafraichir la page" de son navigateur (ou s'il relance l'url).

2éme points, pour gérer le "temps" soit tu le fais en javascript (chiant) soit avec les cookie.

Je t'avoue que c'est la première fois que je vois ce genre de demande.
Le problème n'est pas au niveau de la gestion du temps mais au niveau comment je peux bloquer l'envoie dans un formulaire. J'ai trouvé des solutions comme la suivante:
<form action="#" method="post" id="validate" onsubmit="return false;" />
<button type="submit" id="submit" class="btn btn-default">Envoyer</button>

Mais cette solution ne marche pas avec mon formulaire je continue à envoyer les données vers ma base Smiley decu
Modérateur
Bonjour,

Est-ce que le lien que tu envoies est unique pour chaque client, ou bien est-ce le même lien pour tout le monde ?

Amicalement,
developeurdusamedi a écrit :
Le problème n'est pas au niveau de la gestion du temps mais au niveau comment je peux bloquer l'envoie dans un formulaire. J'ai trouvé des solutions comme la suivante:
&lt;form action="#" method="post" id="validate" onsubmit="return false;" /&gt;
&lt;button type="submit" id="submit" class="btn btn-default"&gt;Envoyer&lt;/button&gt;

Mais cette solution ne marche pas avec mon formulaire je continue à envoyer les données vers ma base Smiley decu


Ton onsubmit de appelé ta function
<form onSubmit="return fonction();"></form>

function fonction() { /* ton code */ return false; }
JENCAL, j'ai trouvé cette solution qui est similaire à votre proposition mais j'ai pas compris qu'est ce que je dois mettre dans " // ici tes traitements qui vont bien".
La solution:
<form action="..." onSubmit="return valider();">
</form>

function valider(){
   // ici tes traitements qui vont bien
   if (ok)
      return true;
   if(!ok){
     alert("erreur");
     return false;
   }
}

Modifié par developeurdusamedi (04 Jan 2019 - 08:55)
Modérateur
Bonjour,

developeurdusamedi a écrit :
Bonjour parsimonhi,
Oui c'est le même lien à tous les clients. Smiley smile


Pourquoi ne pas proposer un formulaire différent pour chaque client (avec dans l'url un "token" différent pour chaque client, et dans le formulaire un <input type="hidden" value="ici répétition du token différent pour chaque client">) ?

Alors un contrôle au niveau du serveur sera possible et facile.

Amicalement,
Modifié par parsimonhi (04 Jan 2019 - 11:27)
parsimonhi, oui c'est à peut prés ça (un formulaire contenant quelques informations sur le client qui va lui même terminer les données) mais mon problème est comment je désactive l'envoi des données par ce client aprés une durée (3 jours par exemple)
Modérateur
Bonjour,

J'imagine que quand le client poste son formulaire, il y a sur ton serveur un script qui l'analyse et stocke les réponses dans une base de donnée.

L'idée est alors :
1) tu te fais une table dans ta base avec un champ où tu mets quelque chose identifiant les formulaires propres à chaque client de manière unique, et une date d'expiration (en gros, dès que t'envoies un lien à un client, tu mets à jour cette table, ou bien tu attends la première soumission du formulaire, ou bien les deux : à toi de voir comment tu t'organises),
2) quand tu reçois le formulaire, tu regardes dans ta base si le formulaire a expiré ou pas. S'il n'a pas expiré, tu traites le formulaire, sinon tu renvoies un message au client signalant l'expiration. Ainsi, ta base ne sera mise à jour que si le formulaire est toujours d'actualité.

Ça me parait simple et robuste !

Amicalement,