1. 程式人生 > >表單提交中form.action,form.submit()問題

表單提交中form.action,form.submit()問題


這兩天做列表資料顯示的時候,幾乎被"物件不支援此屬性和方法" 的錯誤提示搞瘋掉了,兩個完全一樣的程式(事後才知道有個單詞的大小寫

不一樣),竟然一個顯示正常,一個卻頻繁提示出錯。

在一般情況下,同一個表單只能被提交給同一個地址。但在實際web應用中,我們希望同一個表單可以根據使用者的選擇來完成不同的操作,即表

單的分向提交。比如說:在一個網站後臺使用者管理系統中,我需要對一些惡意的使用者進行批量解鎖,鎖定使用者或者刪除的操作,當我從select

中選擇刪除會員時,我們希望表單會提交給能進行刪除的處理程式,當我 從select 中選擇鎖定會員時,我們希望表單會 提交到鎖定會員的處

理程式,解鎖會員 也如此。我們極不願意看到分別為這三個功能建立三個不同的頁面,而其中僅僅 是處理程式不同。

利用客戶端JavaScript的功能,我們簡化可以把三項功能簡化一個介面就可以完成,一個select,其中放置要進行的操作,一個Submit按鈕(其

實一個普通的Button也可以實現,)

<form action="?" method="post" enctype="application/x-www-form-urlencoded" name="listfrm" id="listfrm">

<label>
<select name="Action" size="1" id="Action">
<option value="delete">刪除</option>
<option value="lock">刪除</option>
<option value="unlock">刪除</option>
</select>
</label>

<input name="Submit" id="Submit" type="submit" value="確定" onclick="doPostBack(this.form,'?" />

</form>

這是JavaScript中doPostBack函式的原始碼,其中傳遞的引數為表單物件的引用和表單的action檔案地址

function doPostBack(formObj,actionFile){
if(confirm("確定要執行的操作嗎?")){
formObj.action=actionFile;
formObj.submit();
return true;
}
return false;
}
這樣可以在一個表單中放上多個Button,甚至是連線,都可以實現同一個表單的提交給不同的處理程式。

在做表單處理時要注意:

1、表單應該包含name,aciton,method這三個必須的屬性,enctype,id這兩個屬性可以根據需要加上,一般是建議加上,表單不要巢狀

2.document.form.action與document.form.submit()一定不要搞混,action是屬性,submit是方法,方法不要忘記加上左右括號,這是一般新

手經常遇到的問題。

3.在一個完整表單中,不應有名字為action或submit的標籤,否則將會產生"物件不支援此屬性和方法"的ie錯誤。如程式碼"<input type='xxxx'

name="action" >"在表單中是不允許出現的,而Action和Submit則是允許的(上面的程式程式碼就是用的是這樣的寫法),因為JavaScript是區分大

小寫的。今天我就被這個大小寫搞瘋掉了,參考了n篇文章,終於找到原因所在,也留言自己的部落格上做個備份!