Mon formulaire ne supporte pas la méthode submit()
cs_ordiminnie
Messages postés29Date d'inscriptionvendredi 10 octobre 2008StatutMembreDernière intervention22 juin 2009
-
20 févr. 2009 à 16:27
cs_ordiminnie
Messages postés29Date d'inscriptionvendredi 10 octobre 2008StatutMembreDernière intervention22 juin 2009
-
4 mars 2009 à 13:59
Bonjour,
J'ai un formulaire que je soumets à une fonction Check() via "onclick"
qui est sur un lien (et non sur un bouton submit > d'ailleurs, y'en
a pas du tout sur mon formulaire). Cette fonction vérifie quelques
input et insère des valeurs dans des input caché de ce même formulaire.
Puis il envoie ce formulaire.
Check() s'execute bien jusqu'au moment d'envoyer où j'ai la fameuse
erreur : JScript object doesn't support this property or method (je
travaille en asp.net mais j'ai utilisée un formulaire html classique)
Sur mozilla, la page est rechargée mais la function Check() n'est pas appelée.
Je n'ai pas donné une action à mon formulaire dans sa balise mais bien en javascript.
Est-ce que le fait que je n'ai pas de bouton "submit" dans mon formulaire puisse générer cette erreur ?
Un conflit avec ActiveX ?
Une idée ?
merci de votre aide !
Voilà mon code (épuré)
var sexe;
function Check() {
var sexeF = document.getElementById('f').checked;
var sexeM = document.getElementById('m').checked;
if (sexeF == true) {
sexe = 'f';
} else if (sexeM == true) {
sexe = 'm';
} else {
sexe = 'unknown';
}
document.getElementById('sexe').value = sexe;
myForm = document.getElementById('contactForm');
myForm.action = '#';
myForm.submit();
}
A voir également:
Mon formulaire ne supporte pas la méthode submit()
Bul3
Messages postés4933Date d'inscriptionsamedi 1 juillet 2006StatutMembreDernière intervention 2 février 201516 20 févr. 2009 à 16:46
bonjour,
ben déjà, 9999 sur 10000 un .submit n'est quasi jamais nécessaire
le bouton submit le fait tout seul
les contrôles, ici Check(), sont faits dans le on submit du formulaire
là, comme on n'a ni le formulaire, ni ce qui appelle la fonction
ça devrait baigner si tout l e rest est ok (?) ,
même si ce n'est pas la manière standard de faire
n'oublions pas que tu recharges la même page ( action="#" )
et peut-être des erreurs qu'on ne peut pas détecter ( id, name ... ) ?
va savoir
cs_ordiminnie
Messages postés29Date d'inscriptionvendredi 10 octobre 2008StatutMembreDernière intervention22 juin 2009 20 févr. 2009 à 17:40
Merci Bul3,
c'est vrai que ce n'est pas très orthodoxe ma façon de faire....
apparemment, ce serait mieux de laisser un button submit puis de mettre mon check() dans onSubmit() ?
je précise que je suis encore plus compliquée que ça en a l'air puisque comme tu l'as dit je renvoie ce formulaire avec ses nouvelles valeurs à la même page ...pour le traiter encore une fois en code behind (c#). Pourquoi est-ce que je ne fais pas tout en c# ? en fait je dois utiliser une fonction de hash dans mon Check() qui est déjà développé en javascript...
mais bon, je vais modifier mon code comme tu me l'as suggéré. Merci beaucoup de ton aide, jt complètement bloquée !
et voici la fin de mon code (épuré)
<form id="contactForm" action="" method="post" name="contactForm">
<fieldset>
<legend>CONTACT-US</legend>
cs_ordiminnie
Messages postés29Date d'inscriptionvendredi 10 octobre 2008StatutMembreDernière intervention22 juin 2009 4 mars 2009 à 10:52
Merci à toi bul3 ! J'étais passé sur un autre projet en urgence, mais je suis bien de retour...J'espère que tu ne m'as pas oublié entre temps.
J'ai bien appliqué tes conseils mais ça se complique.
comportement que je veux obtenir : En fait, une fois que mon formulaire est envoyé, la page est rechargée, les données sont à nouveaux traitées en code behind et un mail est envoyé. Si tout se passe bien, le mail est envoyé et la page n'affiche plus qu'un message de remerciement (et non plus le formulaire).
Comportement que j'ai après tes modifications : quand j'appuie sur send, check() est bien appelée, la page est rechargée, le mail envoyé et le messaage de remerciement s'affiche. Seulement, à partir de maintenant, quand je vais sur cette page, c'est toujours le message de remerciement et plus le formulaire. J'ai donc mis mon code behind dans un IsPostBack (variable d'asp.net qui stipule si on est dans un postback ou pas). Et maintenant, mon formulaire s'affiche mais quand j'appuie sur send, Check() n'est plus appelée....
Je n'ai pas d'idée...
C'est un vrai casse tête chinois !!
Au passage, j'ai vu sur ton site que tu pratiquais beaucoup JS, tu pourrais me conseiller un livre ? J'ai un oeil sur "Javascript: la référence" (avec un rhinocéros sur la couverture) qu'est-ce que t'en penses ?
Voici mon code JS:
script type="text/javascript" language="javascript">
var sexeAnswer;
function CheckForm() {
alert('yo');
var sexeF = document.getElementById('f').checked;
var sexeM = document.getElementById('m').checked;
if (sexeF == true) {
sexeAnswer = 'f';
} else if (sexeM == true) {
sexeAnswer = 'm';
} else {
sexeAnswer = 'unknown';
}
var demoChecked = document.getElementById('CHdemo').checked;
var cryptedCode = '';
if (demoChecked) {
var dateNow = new Date();
var myDate = dateNow.getDate() + dateNow.getMonth() + dateNow.getFullYear();
cryptedCode = calcMD5(myDate);
}
Bul3
Messages postés4933Date d'inscriptionsamedi 1 juillet 2006StatutMembreDernière intervention 2 février 201516 4 mars 2009 à 11:18
>>Seulement, à partir de maintenant, quand je vais sur cette page,
>>c'est toujours le message de remerciement et plus le formulaire
pas compris... navré
de ce que je vois, tu as un formulaire
envoyé systématiquement si on clique sur le bouton <send>
( puique return true quoiqu'il arrive )
avec un message d'alerte : 'yo'
ce formulaire ne fait que recharger la même page ( action="#" )
Bul3
Messages postés4933Date d'inscriptionsamedi 1 juillet 2006StatutMembreDernière intervention 2 février 201516 4 mars 2009 à 11:26
>>tu pourrais me conseiller un livre ?
oulah... je n'ai de conseils à donner à personne moi !
>>"Javascript: la
référence" (avec un rhinocéros sur la couverture)
>>qu'est-ce que t'en
penses ?
aucune idée... jamais lu aucun bouquin sur javascript
ça se voit diront certains !
je me débrouille maladroitement avec des tutos ici et là,
une doc comme selfHTML ( gratis, téléchargeable, en français... )
et CodesSources essentiellement
cs_ordiminnie
Messages postés29Date d'inscriptionvendredi 10 octobre 2008StatutMembreDernière intervention22 juin 2009 4 mars 2009 à 12:31
>>aucune idée... jamais lu aucun bouquin sur javascript. ça se voit diront certains !
Ben moi je trouve que tu te débrouilles bien quand même ! Je vais finir par me dire que je suis vraiment nulle !
Sinon, en ce qui concerne mon formulaire, tu l'as bien compris :
>> de ce que je vois, tu as un formulaire
envoyé systématiquement si on clique sur le bouton <send>
( puique return true quoiqu'il arrive )
avec un message d'alerte : 'yo'
ce formulaire ne fait que recharger la même page ( action="#" )
Dès que j'ai écrit et testé ton code, le formulaire a eu ce comportement (nikel) mais depuis, quand ma page est chargée, le code behind (que tu ne vois pas) se déclenche directement, envoie un mail et cache le formulaire pour n'afficher que le message de remerciement. (or le code behind ne devrait se déclencher que si j'ai rempli et envoyé le formulaire). J'AI NEUTRALISE CE PROBLEME en mettant if (IsPostBack).
Maintenant : j'affiche la page avec le formulaire, je clique sur send, la page est rechargée maisChekForm() n'est pas appelé (pas d'alert('yo')). Comment ça se fait ? C'est ça mon problème...
Tiens, je te mets le code behind (documenté) : (c'est en c#)
protected void Page_Load(object sender, EventArgs e) //chargement de la page
{
// je cache les deux div de messages de remerciement
divMsgSend.Visible = false;
bool msgSend = false;
if (IsPostBack) //ne doit se déclencher que si cette page est rechargée (pas la première fois)
{
//je teste si j'ai des variables en querystring (qui proviennent de l'envoie de mon formulaire)
if (Request.ServerVariables["request_method"] == "GET")
{
// je récupère les valeurs de mes variables
string name = Request.Form["TBname"];
string firstname = Request.Form["TBfirstname"];
string function = Request.Form["TBfunction"];
string compagny = Request.Form["TBcompagny"];
string ligne1 = Request.Form["TBligne1"];
string ligne2 = Request.Form["TBligne2"];
string ligne3 = Request.Form["TBligne3"];
string country = Request.Form["TBcountry"];
string vat = Request.Form["TBvat"];
string phone = Request.Form["TBphone"];
string fax = Request.Form["TBfax"];
string email = Request.Form["TBemail"];
string nbr = Request.Form["TBnbr"];
string expense = Request.Form["TBexpense"];
string demo = Request.Form["demo"];
string code = Request.Form["code"];
string sexe = Request.Form["sexe"];
string day = Request.Form["TBday"];
string month = Request.Form["TBmonth"];
string year = Request.Form["TByear"];
string date = String.Format("{0}/{1}/{2}", day, month, year);
// j'envoie les données du formulaire dans un mail
SmtpClient mySmtp = new SmtpClient("relay.skynet.be");
mySmtp.Send("info@mobilexpense.com", "mm@mobilexpense.com", "INFORMATION REQUEST - MobileXpense WEB SITE", dataContact);
msgSend = true;
if (demo == "true") //si la personne a coche 'oui je veux une demo'
{
string dataTransfered = "Thanks for your interest in MobileXpense. Follow this link (or copy/paste it in your browser) for watching our video : http://www.mobilexpense.com/en/Video.aspx Note : this link is only avalaible today, until midnight.";
mySmtp.Send("info@mobilexpense.com", email, "Video Demonstration of MobileXpense", dataTransfered);
msgSendDemo = true;
}
Bul3
Messages postés4933Date d'inscriptionsamedi 1 juillet 2006StatutMembreDernière intervention 2 février 201516 4 mars 2009 à 12:49
>>c'est en c#
navré.. je connais très très mal ( pire que le js )
et trop peu pour être d'une aide quelconque
>>la page est rechargée maisChekForm() n'est pas appelé (pas d'alert('yo')).
euh...
si tu essayes uniquement avec le js et le html donné,
ça doit fonctionner ( à chaque appui sur <send> )
ça fonctionne d'ailleurs chez moi ( ie, ff, ... )
maintenant avec les interactions du c# ??
peut-être creuser de ce coté ? ( sûrement ! )