2009-10-30 39 views
1

在我的HTML代碼中,我有一個包含兩個輸入框(用戶名和密碼)的表單標記。表單將值提交給PHP文件,該文件驗證數據庫的值,如果登錄成功,則重定向到另一個頁面。表單標籤是否必需?

這種方法的問題是,如果不涉及AJAX,即使登錄不成功,它也會刷新頁面。

我想完全刪除表單標籤,將PHP代碼合併到與HTML相同的文件中。爲此,我試圖在輸入框中添加一個onclick()事件。但是,由於表單標籤被刪除,發生了一些尷尬的事情。我選擇使用的值:document.getElementByID

我想知道輸入標記是否需要包含在窗體標記中?如果我只是想要輸入框,並想使用onclick事件完成某些操作,它會起作用嗎?

回答

2

如果你想把它們放在一個表格中,你仍然可以;只是不要在表單上放置一個提交按鈕。如果您使用<button type="button">元素,則該按鈕不應觸發表單提交。

+0

@John:它是對不對? – RKh 2009-10-30 20:45:41

+0

不,HTML 4有一個'

2

如果使用onClick()編寫自己的處理程序,則無需提交表單。但是你應該保持語義HTML標記。

11

我的首選方法是保留<form>標記,但捕獲窗體的onsubmit事件,並且僅顯示return false

<form name="foo" id="foo" action="" method="post"> 
    <input type="text" name="bar" id="bar" /> 
</form> 

下面是一些粗略的PrototypeJS代碼,說明了這種方法。

<script type="text/javascript"> 
    //Handle the window onload event 
    Event.observe(window, 'load', function() { 

    //Handle the form submit event 
    Event.observe($('foo'), 'submit', function(event) { 
     //Stop the event so the form doesn't actually submit 
     Event.stop(event); 
    }); 

    }); 
</script> 
+0

我認爲這是解決您的問題的最佳方案。你可以刪除表單標籤,改變提交到按鈕的輸入類型,並使用onClick(),但你爲什麼要?這種方式使標記更明智。 – GSto 2009-10-30 15:42:45

+3

這種方法的好處是,如果你連接了表單服務器端,即使JavaScript被禁用,它也能工作。 – 2009-10-30 15:52:33

+0

@John,優點。 – 2009-10-30 15:58:56

0

不需要,但是,您需要確保窗體仍然可用。 表單標籤提供更好的標籤式按鍵導航,以及按下回車鍵提交的功能。你可以在JavaScript中模擬這些,但要小心。 如果你願意,你可以嘗試設置表單標籤的動作url到 <form action="javascript:submitLogin();">,這將驗證表單。如果javascript關閉,什麼都不會發生。

0

雖然通常建議使用,但並不是必需的。事實上,它是驗證爲html 4.01嚴格沒有。

2

輸入標籤不需要包含在表單標籤中,以便網站按照您的要求工作。

但是,您應該以大多數用戶可以使用它的方式創建您的網站。因此,對於那些沒有啓用JavaScript的用戶或者正在使用不具備JavaScript功能的瀏覽器查看您的網站的用戶,您仍然應該開發自己的網站,以便他們擁有良好的體驗。

在沒有啓用JavaScript的情況下,遵循Progressive Enhancement原則,應在網站正常工作後添加AJAX行爲。正如Mark指出的那樣,防止表單執行默認行爲的最好方法是 - 在表單的onsubmit事件處理函數上返回false。

如果您嘗試創建通過驗證的語義HTML,您還需要表單標記。

相關問題