Bonjour à tous et merci d'avance pour votre aide.
Mon problème est l'appel de fonction qui génère l'erreur Firebug suivante :
Possibilité de test
[*]La page en erreur est sur plpconsulting.free.fr/index.html
[*]A contrario, un exemple qui fonctionne parfaitement bien sur le même structure est dispo sur plpconsulting.free.fr/ValidationRules/index.html. Le formulaire est par contre directement dans la page HTML
Objectif
j'envoie des données saisies dans un formulaire HTML au format XML via l'objet XMLHttpRequest (fichier SendMail.js) à un fichier PHP (SendMail.php) qui envoie par mail les données saisies dans le formulaire HTML.
Dans SendMail.js:
fonction InitValue
Test des contraintes de validation par appel de la fonction ValidatefrmContact qui est déclarée dans le Header de la page HTML (Voir dans Header)
[*]Récupération des données du formulaire si test validation OK
[*]Appel de CallScript
fonction CallScript
[*]envoi au format XML par méthode post des données saisies dans le formulaire au fichier phpSendMail.php
Dans SendMail.php
[*]Envoi d'un mail avec les données saisies dans le formulaire HTML
Info importante
le formulaire est intégré dans un objet Onglet JQuery (Voir code du Header)
Dans Header, il y a :
la référence au fichier JS
L'Onglet (tab) JQuery.
Une fonction de contrôle des règles de validations
Dans body, il y a :
la déclaration du contrôle Onglet avec tous les contrôles associés
Et dans le 4ème onglet, un contrôle formulaire
La fonction InitValue.js appelle ValidatefrmContact(document.forms.frmContact) et passe en paramètre le formulaire le formulaire frmContact
Avec tout ça j'ai donc, je le répéte l'erreur Firebug suivante :
Or sur http://plpconsulting.free.fr/ValidationRules/index.html, j'ai fait le même exercice mais sans l'objet Onglet JQuery et ca fonctionne à la perfection d'où ma question sur la portée des fonctions JS?
Modifié par informer (05 Dec 2013 - 23:14)
Mon problème est l'appel de fonction qui génère l'erreur Firebug suivante :
a écrit :
ReferenceError: ValidatefrmContact is not defined
if (ValidatefrmContact(document.forms.frmContact) == false)]
Possibilité de test
[*]La page en erreur est sur plpconsulting.free.fr/index.html
[*]A contrario, un exemple qui fonctionne parfaitement bien sur le même structure est dispo sur plpconsulting.free.fr/ValidationRules/index.html. Le formulaire est par contre directement dans la page HTML
Objectif
j'envoie des données saisies dans un formulaire HTML au format XML via l'objet XMLHttpRequest (fichier SendMail.js) à un fichier PHP (SendMail.php) qui envoie par mail les données saisies dans le formulaire HTML.
Dans SendMail.js:
fonction InitValue
Test des contraintes de validation par appel de la fonction ValidatefrmContact qui est déclarée dans le Header de la page HTML (Voir dans Header)
[*]Récupération des données du formulaire si test validation OK
[*]Appel de CallScript
fonction CallScript
[*]envoi au format XML par méthode post des données saisies dans le formulaire au fichier phpSendMail.php
Dans SendMail.php
[*]Envoi d'un mail avec les données saisies dans le formulaire HTML
Info importante
le formulaire est intégré dans un objet Onglet JQuery (Voir code du Header)
Dans Header, il y a :
la référence au fichier JS
<script type="text/javascript" src="SendEmail.js"></script>
L'Onglet (tab) JQuery.
$(document).ready(function()
{
var jQueryTabs1Opts =
{ show: false, event: 'click', collapsible: false };
$("#jQueryTabs1").tabs(jQueryTabs1Opts);
... Liste des autres contrôles JQuery
Une fonction de contrôle des règles de validations
function ValidatefrmContact(theForm)
{ var regexp;
if (theForm.subject.selectedIndex < 0)
{
alert("Saisie incorrecte ou manquante");
theForm.subject.focus();
return false;
}
... autres contrôles
}
Dans body, il y a :
la déclaration du contrôle Onglet avec tous les contrôles associés
<div id="jQueryTabs1" style="position:absolute;left:24px;top:66px;width:1391px;height:837px;z-index:176;">
........ Liste des autres contrôles associés
</div>
Et dans le 4ème onglet, un contrôle formulaire
<div id="wb_frmContact" style="position:absolute;left:49px;top:69px;width:438px;height:730px;z-index:101;">
<form name="frmContact" method="post" action="" enctype="text/plain" id="frmContact" onsubmit="return ValidatefrmContact(this)">
<input type="text" id="firstname" style="position:absolute;left:104px;top:45px;width:313px;height:23px;line-height:23px;z-index:59;" name="name" value="" tabindex="2">
... Liste des autres contrôles associés
...Et bien sûr le bouton avec even = onclick qui appelle une fonction InitValue()
<input type="button" id="btSend" onclick="InitValue();return false;" name="" value="Envoyé" style="position:absolute;left:322px;top:693px;width:96px;height:25px;z-index:94;" tabindex="18">
</form>
La fonction InitValue.js appelle ValidatefrmContact(document.forms.frmContact) et passe en paramètre le formulaire le formulaire frmContact
function InitValue() {
if (ValidatefrmContact(document.forms.frmContact) == false)
{ var alerte = "opération annulée. Données obligatoires non saisies ou problème de format";
alert (alerte);
return false;
}
var _subject = $("#subject option:selected").text();
var _firstname = $("#firstname").val();
var _name = $("#name").val();
var _email = $("#email").val();
var _message = $("#message").val();
[... ]
var _data = "name="+_name+"&firstname="+_firstname+"&email=" +_email+"&message="+_message
[... ]
// --- Appel au script PHP de traitement
var _scriptName ="SendEmail.php";
CallScript(_scriptName,_data);
alert("Fin de traitement");
}
function CallScript(scriptName, data) {
var xhr_object = null;
if (window.XMLHttpRequest) { xhr_object = new XMLHttpRequest(); }
else if (window.ActiveXObject) { xhr_object = new ActiveXObject("Microsoft.XMLHTTP"); }
else
{ alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
return;
}
xhr_object.open("POST", scriptName, true);
xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhr_object.send(data);
}
Avec tout ça j'ai donc, je le répéte l'erreur Firebug suivante :
a écrit :
ReferenceError: ValidatefrmContact is not defined
if (ValidatefrmContact(document.forms.frmContact) == false)
Or sur http://plpconsulting.free.fr/ValidationRules/index.html, j'ai fait le même exercice mais sans l'objet Onglet JQuery et ca fonctionne à la perfection d'où ma question sur la portée des fonctions JS?
Modifié par informer (05 Dec 2013 - 23:14)