2015-04-02 71 views
1

我正在寫一個表單並將其作爲「驗證」打印到「id =」printpeople「'中。它可以工作,但大約三秒後,表單會自動刷新,p標籤也會刷新。除非我點擊「提交」按鈕,頁面似乎不會自動刷新。這是爲什麼發生?HTML/Javascript表單自動重置

HTML:

<form name="form" id="form" class="form" onsubmit="createperson()" method="post"> 
    <label for="name">Full Name:</label> 
    <input type="text" name="name" id="name" /><br> 
     ... 
    <input type="submit" value="Submit" class="submit" /> 
</form><br> 
<p>People:</p> 
<p id="printpeople"></p> 

的Javascript:

function person(form){ 
    var name = document.forms["form"]["name"].value;//retrieves name field 
     ... 
    var person = [name,email,gender,address];//creates new person array 
    return person; 
} 

function createperson(form){ 
    var personinstance = person(form); 
    var personstring = "Name "+personinstance[0]+ 
      "\n"+"Email "+personinstance[1]+ 
      ... 
    stringholder(personinstance, "write"); 
} 

window.peoplecriteria = ["Name: ","Email: ","Gender: ","Address: "]; 
window.peoplearray = []; //stores all the people in here 
window.peoplestring = "";//string that's used for pretty printing. 

function stringholder(parameter, readwrite){ 
    window.peoplearray.push(parameter); 
    window.peoplestring += window.peoplecriteria[0]+window.peoplearray[0]; 
    document.getElementById("printpeople").innerHTML = peoplestring; 
} 
+0

你知道嗎,堆棧溢出支持內嵌編輯器(類似於plunkr或jsbin) ?它張貼到你說的地方? – 2015-04-02 00:38:50

+0

你是什麼意思? – 2015-04-02 00:41:47

+0

您沒有指定任何操作,因此它將自行發佈。 – 2015-04-02 00:46:11

回答

2

使用:

<form name="form" id="form" class="form" onsubmit="createperson();return false" method="post"> 

你應該避免的形式從提交本身。

這使得提交函數返回false。默認情況下,onsubmit函數返回true。通過返回false,您聲明您不希望提交通過。

+0

這工作。你能解釋它爲什麼有效嗎? – 2015-04-02 00:47:10

+0

編輯答案更詳細。 – Pachonk 2015-04-02 00:48:52

0

您也許能夠從與出發,按照createperson您的第一行(形式)提交停止形式:

form.preventDefault(); 
+0

這沒有奏效。 – 2015-04-02 00:50:27