简体   繁体   English

仅使用Javascript-我提交了表单,但没有任何反应

[英]Javascript only - I submit a form and nothing happens

I am new to Javascript. 我是Java语言的新手。 I am trying to learn it by doing exercises. 我正在尝试通过练习来学习它。 The one I am doing doesn't seem hard but I have a little problem. 我正在做的似乎并不困难,但我有一个小问题。

I have a form with 3 texts inputs, and a submit button. 我有一个带有3个文本输入的表单和一个提交按钮。 By pressing the button I get the fields values and create a text block with these values. 通过按下按钮,我得到字段值并使用这些值创建一个文本块。 Then the form is hidden. 然后,该表单被隐藏。

When I click the button, form is hidden, but the text block is not created. 当我单击按钮时,表单被隐藏,但未创建文本块。

If I replace input type = submit with input type = button, text block is created, but required attribute doesn't work. 如果我将输入类型=提交替换为输入类型=按钮,则会创建文本块,但必填属性不起作用。

I expect : I click the first button, form appears. 我希望:我单击第一个按钮,出现表格。 I fill the form and click the button, text block is created, form is hidden, and first button appears. 我填写表单并单击按钮,创建文本块,隐藏表单,然后显示第一个按钮。

Result : I click the first button, form appears. 结果:我单击第一个按钮,出现表格。 I fill the form and click the button, form is hidden, and first button appears. 我填写表格并单击按钮,表格被隐藏,并且出现第一个按钮。

 function clicBoutonAjouter() { // On récupère les valeurs du formulaire var formAuteur = document.getElementById("form1").value; var formTitre = document.getElementById("form2").value; var formUrl = document.getElementById("form3").value; // Création élément url var formDivTextUrl = document.createElement("span"); formDivTextUrl.appendChild(document.createTextNode(formUrl)); // Création élément titre cliquable var formDivTextTitre = document.createElement("a"); formDivTextTitre.classList.add("titre") formDivTextTitre.href = ("//" + formUrl); // à corriger : me renvoie en local/google.fr formDivTextTitre.appendChild(document.createTextNode(formTitre)); // Création élément auteur var formDivTextAuteur = document.createElement("span"); formDivTextAuteur.appendChild(document.createTextNode("Ajouté par " + formAuteur)); // Assemblage ligne un var formLigenUn = document.createElement("h4"); formLigenUn.classList.add("ligneUn"); formLigenUn.appendChild(formDivTextTitre); formLigenUn.appendChild(formDivTextUrl); // Assemblage bloc var formDiv = document.createElement("div"); formDiv.classList.add("lien"); formDiv.appendChild(formLigenUn); formDiv.appendChild(formDivTextAuteur); // Affichage var element = document.getElementById("contFormulaire"); element.insertAdjacentElement('afterend', formDiv); var formulaire1 = document.getElementById("form1"); formulaire1.classList.replace("visible", "invisible"); var formulaire2 = document.getElementById("form2"); formulaire2.classList.replace("visible", "invisible"); var formulaire3 = document.getElementById("form3"); formulaire3.classList.replace("visible", "invisible"); boutonAjout.classList.replace("visible", "invisible"); document.getElementById("ladiv"); var ladiv = document.getElementById("ladiv"); ladiv.classList.replace("invisible", "visible"); } 
 <h1>Activité 2</h1> <!-- Les nouveaux éléments sont ajoutés dans cette balise --> <div id="contenu"> <form id="contFormulaire"> <div id="ladiv" class="visible"> <button id="boutonFormulaire" type="button" onclick="clicBoutonAjoutLien()">Ajouter un lien</button> </div> <input type="text" class="invisible" id="form1" name="form1" placeholder="Entrer votre nom" required> <input type="text" class="invisible" id="form2" name="form2" placeholder="Entrer le titre du lien" required> <input type="text" class="invisible" id="form3" name="form3" placeholder="Entrer l'URL du site" required> <input type="submit" value="Ajouter" id="boutonAjout" class="invisible" onsubmit="clicBoutonAjouter()"> </form> </div> 

You need move onsubmit="return clicBoutonAjouter()" to form tag 您需要移动onsubmit="return clicBoutonAjouter()"来形成标签

and return false on clicBoutonAjouter to prevent page reload. 并在clicBoutonAjouterreturn false以防止页面重新加载。

 function clicBoutonAjouter() { // On récupère les valeurs du formulaire var formAuteur = document.getElementById("form1").value; var formTitre = document.getElementById("form2").value; var formUrl = document.getElementById("form3").value; // Création élément url var formDivTextUrl = document.createElement("span"); formDivTextUrl.appendChild(document.createTextNode(formUrl)); // Création élément titre cliquable var formDivTextTitre = document.createElement("a"); formDivTextTitre.classList.add("titre") formDivTextTitre.href = ("//" + formUrl); // à corriger : me renvoie en local/google.fr formDivTextTitre.appendChild(document.createTextNode(formTitre)); // Création élément auteur var formDivTextAuteur = document.createElement("span"); formDivTextAuteur.appendChild(document.createTextNode("Ajouté par " + formAuteur)); // Assemblage ligne un var formLigenUn = document.createElement("h4"); formLigenUn.classList.add("ligneUn"); formLigenUn.appendChild(formDivTextTitre); formLigenUn.appendChild(formDivTextUrl); // Assemblage bloc var formDiv = document.createElement("div"); formDiv.classList.add("lien"); formDiv.appendChild(formLigenUn); formDiv.appendChild(formDivTextAuteur); // Affichage var element = document.getElementById("contFormulaire"); element.insertAdjacentElement('afterend', formDiv); var formulaire1 = document.getElementById("form1"); formulaire1.classList.replace("visible", "invisible"); var formulaire2 = document.getElementById("form2"); formulaire2.classList.replace("visible", "invisible"); var formulaire3 = document.getElementById("form3"); formulaire3.classList.replace("visible", "invisible"); boutonAjout.classList.replace("visible", "invisible"); document.getElementById("ladiv"); var ladiv = document.getElementById("ladiv"); ladiv.classList.replace("invisible", "visible"); return false; } 
 <!-- Les nouveaux éléments sont ajoutés dans cette balise --> <div id="contenu"> <form id ="contFormulaire" onsubmit="return clicBoutonAjouter()"> <div id="ladiv" class="visible"> <button id="boutonFormulaire" type="button" onclick="clicBoutonAjoutLien()">Ajouter un lien</button> </div> <input type="text" class="invisible" id="form1" name="form1" placeholder="Entrer votre nom" required> <input type="text" class="invisible" id="form2" name="form2" placeholder="Entrer le titre du lien" required> <input type="text" class="invisible" id="form3" name="form3" placeholder="Entrer l'URL du site" required> <input type="submit" value="Ajouter" id="boutonAjout" class="invisible" > </form> </div> 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM