Javascript 按钮提交太早
我的按钮提交表单太早。当我点击我的按钮时,它应该创建一个文本区域,我想在其中写入,然后再次点击按钮提交它。它确实创建了textarea,但我从来没有机会写任何东西,因为它在textarea创建之后立即提交。有什么办法可以避免这种情况 JavascriptJavascript 按钮提交太早,javascript,html,button,event-listener,Javascript,Html,Button,Event Listener,我的按钮提交表单太早。当我点击我的按钮时,它应该创建一个文本区域,我想在其中写入,然后再次点击按钮提交它。它确实创建了textarea,但我从来没有机会写任何东西,因为它在textarea创建之后立即提交。有什么办法可以避免这种情况 Javascript function createEmailField(event) { var name = document.getElementById("name").value; if (name == "") { win
function createEmailField(event) {
var name = document.getElementById("name").value;
if (name == "") {
window.alert("Mata in ditt namn");
}
else if (name.search(/^[A-Za-z]+$/) == -1) {
window.alert("Mata in ett namn med bokstäver");
}
else {
var newDiv = document.createElement("div");
var br = document.createElement("br");
newDiv.appendChild(br);
newDiv.appendChild(document.createTextNode("Hej " + name + "!"));
var br = document.createElement("br");
newDiv.appendChild(br);
newDiv.appendChild(document.createTextNode("Hur når vi dig?"));
var br = document.createElement("br");
newDiv.appendChild(br);
newDiv.appendChild(document.createTextNode("Epost:"));
var br = document.createElement("br");
newDiv.appendChild(br);
var input = document.createElement("input");
input.setAttribute("type", "text");
input.setAttribute("id", "email");
input.setAttribute("name", "email");
newDiv.appendChild(input);
var form = document.getElementById("form");
var callButton = document.getElementById("button");
form.insertBefore(newDiv, callButton);
removeEvent(callButton, "click", createEmailField, false);
addEvent(callButton, "click", createTextArea, false);
var email = document.getElementById("email");
email.onkeypress = prevent;
removeEvent(document.getElementById("name"), "click", createEmailField, false);
}
}
function createTextArea(event) {
var email = document.getElementById("email").value;
if (email == "") {
alert("Mata in ditt email");
}
else if (email.search(/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/) == -1) {
window.alert("Mata in ett korrekt email");
}
else {
var newDiv = document.createElement("div");
var br = document.createElement("br");
newDiv.appendChild(br);
newDiv.appendChild(document.createTextNode("Vad har du för fråga om vår verksamhet?"));
var br = document.createElement("br");
newDiv.appendChild(br);
var textArea = document.createElement("textArea");
textArea.setAttribute("id", "question");
textArea.setAttribute("name", "question");
textArea.cols = "30";
textArea.rows = "5";
newDiv.appendChild(textArea);
var br = document.createElement("br");
newDiv.appendChild(br);
newDiv.appendChild(document.createTextNode("Vi kommer att svara dig via: " + email));
var br = document.createElement("br");
newDiv.appendChild(br);
var form = document.getElementById("form");
var callButton = document.getElementById("button");
form.insertBefore(newDiv, callButton);
removeEvent(document.getElementById("email"), "click", createTextArea, false);
callButton.setAttribute("type", "submit");
}
}
function prevent(event) {
if ((window.event && window.event.keyCode == 13) || (event && event.keyCode == 13)) {
if (window.event) {
window.event.returnValue = false;
} else if (event.preventDefault) {
event.preventDefault();
}
}
}
function init() {
var callButton = document.getElementById("button");
addEvent(callButton, "click", createEmailField, false);
var name = document.getElementById("name");
name.onkeypress = prevent;
}
window.onload = init;
HTML
Frågeformulär
你是谁?。。。
@DrWooolie您可能需要使用event.preventDefault()代码>这段代码将停止元素的实际行为,在这种情况下是按钮,或者它也可以处理锚点击事件
我想你是想在createTextArea
中调用prevent
,但你没有。我试过使用prevent。但它并没有提交,而是开始创建新的文本区域,尽管我删除了我用默认设置尝试的事件。但是,它没有提交,而是开始创建新的文本区域,即使我删除了Event尽管您创建了prevent方法,但您在错误的位置调用。目前,它在文本框的按键上,而这并不关心按钮的点击。而不是使用防止文本框使用它的按钮。您可能还想检查文本框是否为null或空,或者是否根据需要进行验证,然后在文本框下方显示一条消息。
<h2> Frågeformulär </h2>
<form id="form" method="post" action="http://student.ts.mah.se/da123aht11/echoscript.php">
<div>
Vad heter du?...
<br /><input type="text" name="name" id="name" />
</div>
<input type="button" name="skicka" value="Skicka" id="button">
</form>