2009-06-25 50 views
0

可能是一些愚蠢的,我做的事情。我想用提交的表單的值填充隱藏的DIV。顯示錶單數據一個DIV上提交

的DIV數據正確時是否打開,但隨後的頁面加載完成後復位。我究竟做錯了什麼?

這裏是我的測試:

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
    <meta http-equiv="Content-Type" content= 
    "text/html; charset=us-ascii" /> 

    <title>Test</title> 
    <script type="text/javascript"> 
     function test(){ 

      var usr = document.getElementById('user').value; 
      var pwd = document.getElementById('passwd').value; 

      document.getElementById('out').innerHTML = usr + " " + pwd; 
      document.getElementById('out').style.display = "block"; 

      return true; 
     } 
    </script> 
</head> 

<body> 
    <form action="" onsubmit="return test()"> 
     <input type="text" id="user" name="user" /> 
     <input id="passwd" type="text" name="passwd" /> 

     <p><input type="submit" value="Go" /></p> 
    </form> 

    <div id="out" style="display:none;"> 
    </div> 
</body> 

+0

由於頁面刷新,JavaScript生成的div被銷燬。這是網絡編程的基礎,您的方法應該是顯示與提交的值不同的頁面。 – razzed 2009-06-25 15:34:06

回答

8

簡短的回答:

更改此

return true; 

這個

return false; 

長答案:

表單被設計爲當它們被提交時加載新頁面。但是,通過編寫腳本,我們可以通過停止提交事件來阻止此行爲。這可以通過多種方式來實現,但是對於你的榜樣,簡單地返回從您的處理器將取消事件「假」,但只有如果的onsubmit屬性也有一個return語句(你已經有了)。

+0

所有答案都很好。這說得很好。謝謝。 – thermans 2009-07-07 17:46:30

1

的的onsubmit功能提交表單回頁面。您需要取消該事件以防止它提交數據並重新加載頁面。簡單的方法是讓你的test()函數返回false。如果您仍然希望表單提交併在div中顯示數據,則需要通過AJAX或iFrame提交表單。

1

嘗試更換 「返回true;」在你的函數結尾處加上「return false;」。我的理由是,因爲你有action屬性中指定,但值,它可能會認爲,當前頁面的價值,因爲你不取消該事件的頁面重新加載。

1

您需要返回false

你看,的onsubmit的返回值來決定是否繼續提交表單。所以如果這是真的,頁面將重新加載並且值將丟失。如果它是假的,它不會!

1

此行可能是您的問題:

<form action="" onsubmit="return test()"> 

空白action屬性會導致頁面的提交表單時反彈到它本身(重裝)。您可以通過確保test()返回false而不是true來防止這種情況發生,這將使表單完全不提交。

1

當您發佈表單時,數據將會丟失。你可以通過設置return true來阻止表單返回false,或者你可以添加一些邏輯來打印出DIV id =「out」中的用戶和passwd字段,並且如果用戶和passwd字段有一個值。

1

作爲另一種選擇,您可以使用不需要提交表單即可完成工作的鏈接。

<a href="#" onClick="test()"> Do </a> 
-1

你的問題就行了 應填寫與頁面或與PHP代碼引導到頁面本身的名字的操作: 我已經測試。