2009-11-16 4 views
0

Im essayant de définir l'action d'un formulaire avec javascript!réglage action de formulaire avec javascript ne fonctionne pas

Comment se fait-il ne fonctionnera pas sur ce code: (ce qui se passe est que la page est soumise à lui-même, comme dans 'action = "#"'

function validateForm() { 
    var nr_of_pics=document.getElementById("annonsera_nr_pics").value; 
    var name = document.getElementById("annonsera_name"); 
    var tel = document.getElementById("annonsera_tel"); 
    var email = document.getElementById("annonsera_email"); 
    var area = document.getElementById("annonsera_area"); 
    var community = document.getElementById("annonsera_area_community"); 
    var category = document.getElementById("annonsera_category"); 
    var subcats = document.getElementById("annonsera_subcats").getElementsByTagName("select"); 
    var headline = document.getElementById("annonsera_headline"); 
    var description = document.getElementById("annonsera_des"); 
    var price = document.getElementById("annonsera_price"); 
    if (nameValid(name) && telValid(tel) && emailValid(email) && areaValid(area) && communityValid(community) && categoryValid(category) && subcatsValid(subcats) && headlineValid(headline) && descriptionValid(description) && priceValid(price)){ 
     var form = document.getElementById("annonsera").action; 
     form = "bincgi/verify_"+category+".php"; 
     alert (form); 
     return true; 
     } 
    return false; 
} 

et la forme:

<form name="annonsera" id="annonsera" method="post" enctype="multipart/form-data" onSubmit="return validateForm();"> 

d'ailleurs, la zone d'alerte affiche wont vous non plus! AUSSI, l'action mise en forme manuellement en HTML fonctionne très bien, et la forme est validée correctement!

+0

Essayez de voir ce qui ne va pas dans Error Console dans Mozilla – sathish

+0

Vous ne savez pas si ce serait une solution pour vous, mais vous ne pourriez pas avoir le formulaire pointant vers le même fichier, et gérer les différentes catégories avec un 'switch ($ _POST ['category'] '? – Marco

+0

Si l'alerte ne s'affiche pas, utilisez-la pour affiner votre problème Mettre une alerte au début de la fonction validateFrom Cela signifie-t-il? Supprimer la clause" if ". Supprimer les lignes une par une jusqu'à ce que l'alerte existante s'affiche ou que les deux alertes soient adjacentes.Lorsque vous supprimez la ligne qui affiche votre alerte existante, vous savez quelle ligne est à l'origine de votre problème. – Alohci

Répondre

2

var form = document.getElementById("annonsera").action;
form = "bincgi/verify_"+category+".php";

Ces lignes ne sont pas en train de faire ce que vous semblez le penser qu'ils font.

La première ligne crée une variable appelée 'form' et copie l'action actuelle du formulaire dans cette variable sous la forme d'une chaîne. La deuxième ligne définit ensuite la variable sur une nouvelle valeur, mais l'action du formulaire n'est pas modifiée car la variable contenait uniquement une copie de l'action du formulaire.

Ce serait ce que vous êtes après:

var formElement = document.getElementById("annonsera");
formElement.action = "bincgi/verify_"+category+".php";

Cependant, je ne sais pas pourquoi votre boîte d'alerte n'apparaît pas du tout. Êtes-vous certain que toutes les méthodes de validité sont effectivement adoptées?

+0

oui, je les ai testés, et ils sont tous valables!la boîte d'alerte ne montrera pas! très étrange –

0

Donnez simple comme

document.annonsera.action = "bincgi/verify_"+category+".php"

et de soumettre le formulaire

document.annonsera.submit()

+0

est-ce que document.annonsera.submit() doit vraiment être là, car le code retourne vrai de toute façon? –

+0

Si vous voulez soumettre forme. document.annonsera.submit() this. – sathish

0

Essayez ceci:

document.getElementById("annonsera").action = "bincgi/verify_"+category+".php"; 

Le problème avec votre code est que vous devez d'abord lire l'attribut d'action dans une variable:

var form = document.getElementById("annonsera").action; 

puis vous définissez la variable form sur une nouvelle chaîne, mais cela ne mettra pas à jour la valeur de l'élément DOM.

+0

ne fonctionnera pas non plus! même problème! mettre une boîte d'alerte ne sera même pas montrer ... hmm –

Questions connexes