submit和button提交表單的區別

(1) 下邊的寫法使得表單frm能夠自動提交 :下邊的這個form,將鼠標點進的文本框中然後按鍵盤的回車鍵,則頁面自動進入百度頁面:http://www.baidu.com
<form name='frm' action="http://www.baidu.com ">

   <input type="text" name= "userName"/>
    <input type="hidden" name= "userName1"/>
</form>

注意:將上邊的“<input type="hidden" name= "userName1"/>”去掉或者增加上,都不能改變頁面的自動提交!
(2)而同樣的寫法,進行如上的操作,卻不會提交
可能是有兩個文本輸入框的緣故吧(注意:上邊僅有一個)。
<form name='frm' action="http://www.baidu.com ">
    <input type="text" name= "userName"/>
    <input type="text" name= "pass"/>
</form>
(3)下面試試,同一個頁面有多個from的情況
這裏先試試多個form、每個form中僅有一個文本輸入框
<form name='frm1' action="http://www.baidu.com ">
    <input type="text" name= "userName"/>
    <input type="hidden" name= "userName1"/>
</form>
<form name='frm2' action="http://www.google.cn/ ">
    <input type="text" name= "userName"/>
</form>
經試驗,每個from中的文本輸入框都具有自動提交的能力。 
(4)下面試試,同一個頁面有多個from的情況
這裏先試試多個form、有的form中僅有一個文本輸入框,有的form中則有多個文本輸入框
<form name='frm1' action="http://www.baidu.com ">
    <input type="text" name= "userName"/>
    <input type="text" name= "passWord"/>
</form>
<form name='frm2' action="http://www.google.cn ">
    <input type="text" name= "userName"/>
</form>
<form name='frm3' action="http://www.yahoo.com ">
    <input type="text" name= "userName"/>
    <input type="text" name= "passWord"/>
</form>
經試驗,只有 frm2 具有自動提交的特性。

看來:只要頁面中的某個表單中僅有一個文本輸入框,則其頁面就具有自動提交的特性了。
5)如何防止頁面自動提交?!
很簡單!只要在from 中加上 onSubmit="return false;"就OK了!
<form name='frm1' action="http://www.baidu.com ">
    <input type="text" name= "userName"/>
    <input type="text" name= "passWord"/>
</form>
<form name='frm2' action="http://www.google.cn " onSubmit="return false;">
    <input type="text" name= "userName"/>
</form>

呵呵,經過onSubmit="return false;" 改造後,frm2不再自動提交了!
(6)下邊看看input type="submit"對提交表單的影響

這裏不拿僅有一個文本框的form進行測試了(如果不用onSubmit="return false;" ,它是自動提交的)
<form name='frm1' action="http://www.baidu.com ">
    <input type="text" name= "userName"/>
    <input type="text" name= "passWord"/>
    <input type="submit" value="提交1"/>
</form>
<form name='frm2' action="http://www.google.com ">
    <input type="text" name= "userName"/>
    <input type="text" name= "passWord"/>
    <input type="submit" value="提交2"/>
</form>
則,分別鼠標點擊frm1、frm2中的文本框並按回車後,會根據各自的action來進入不同的頁面
7)下邊看看input type="button"對提交表單的影響
<form name='frm1' action="http://www.baidu.com ">
    <input type="text" name= "userName"/>
    <input type="text" name= "passWord"/>
    <input type="button" value="提交1"/>
</form>
<form name='frm2' action="http://www.google.com ">
    <input type="text" name= "userName"/>
    <input type="text" name= "passWord"/>
    <input type="button" value="提交2"/>
</form>

哈哈,分別鼠標點擊frm1、frm2中的文本框並按回車後,都沒有反應!看來button這樣是不能提交表單的
(8)使用 "button" 來提交表單

<form name='frm' action="http://www.baidu.com ">
    <input type="text" name= "userName"/>
    <input type="text" name= ""/>
    <input type="button" value="提交1" onclick="exec('http://www.google.com')"/>
</form>

userName 、passWord處都填寫數據,點擊button。
OK!連上google了,IE地址欄顯示:http://www.google.com/?userName=1passWord=1
(9)使用 "button" 來提交表單——參考js exec1()中的相關注釋   

<form name='frm' action="http://www.google.com ">
    <input type="text" name= "userName"/>
    <input type="text" name= "passWord"/>
    <input type="button" value="提交1" onclick="exec1('http://www.google.com')"/>
</form>
<form name='frm1' action="http://www.hao123.com ">
    <input type="text" name= "userName"/>
</form>

</body>
</html>


在web開發中,我們經常會遇到,一點回車鍵表單就自己提交的問題,能不能禁用回車鍵呢,答案是肯定的.


Html代碼
<from action="" method="post" onSubmit="return false">  
...............   
</from>  


如果想在表單提交時,進行驗證

Html代碼
<html>  
<head>  
<script lanuage="javascript">  
function check()   
{   
//驗證不通過時   
return false;   
}   
</script>  
</head>  
<body>  
<from action="" method="post" onSubmit="return check()">  
...............   
</from>  
</body>  
</html>  

 

這樣就會對錶單進行驗證再進行提交

要注意的是,千萬不能寫成

Html代碼
<from action="" method="post" onSubmit="check()">  
...............   
</from>  


因爲check()不通過後會返回false, 因爲onsubmit屬性就像是<form>這個html對象的一個方法名,其值(一字符串)就是其方法體,默認返回true,所以還是相當 於驗證通過
記得對錶單驗證一定要寫成這樣

Html代碼
<from action="" method="post" onSubmit="return check()">  
...............   
</from> 

 


在ie下,<button>標記恐怕還存在幾個不大不小的問題。

  1. 在一個表單裏,如果有一個以上"submit"類型的<button>標籤存在,在表單被提交時,不管你點擊哪 個<button>,所有<button>的值都會被post/get。
  2. <button>的缺省type屬性被設置爲"button",但是在A級別瀏覽器下,應該設置爲"submit"纔對
  3. 如果你用javascript去訪問<button>的value屬性,IE卻返回了<button>的 innerHTML屬性,很讓人惱火。 (可以使用"getAttributeNode"方法來避免.)

例如,一段

CODE:
  1. <form>
  2. <button type="submit" value="1" name="action-1" >text 1 </button>
  3. <button type="submit" value="2" name="action-2" >text 2 </button>
  4. </form>

在IE下,上面兩個button的數據都會被提交。並且ie會提交這兩個button的innerText而不是value。而其它瀏覽器僅僅提交 你點擊的那個button。

 

IE6與FireFox的區別,IE6下button標籤的type默認是button,而Firefox下卻是submit

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章