2013-03-08 73 views
2

我使用jQuery來在某些情況下自動提交表單。這裏是我的代碼:JavaScript表單提交不會發送輸入類型的值=提交

$("form [data-autosubmit]").closest("form").submit(); 

它的工作原理,但它不會發送名稱和input type=submit按鈕的價值。

input: text they entered 
submit: Submit 

然而,當形式是由JavaScript的提交,僅此POSTDATA發送:當用戶提交

<form method="POST"> 
<input type="text" name="input" value="text they entered"> 
<input type="submit" name="submit" value="Submit"> 
</form> 

就送以下POSTDATA:

爲了詳細說明,下面的代碼:

input: text they entered 

我的PHP腳本依賴於POS中「提交」值的存在TDATA。

我想我可以這樣做:

$("form [data-autosubmit]").closest("form").find("input[type=submit]").click(); 

但似乎違反邏輯,當有submit事件用於此目的的形式。

+0

聽起來很奇怪......你說得對,它應該顯示出來。我想知道這是否是瀏覽器問題。作爲一個快速解決方案,我只需在表單中添加一個,然後查找。 – rnirnber 2013-03-08 19:16:06

+0

@rnirnber這就是我以前做的,但它太凌亂了... – stackunderflow 2013-03-08 19:16:50

回答

3

HTML form s被構建爲支持多個submit輸入(例如,相同的表單可以具有「插入」和「編輯」按鈕)。因此表單依賴於點擊來實際註冊_POST提交中的所選字段。基本上,HTML允許,看起來像這樣一種形式:

<form [...]> 
    <input type="submit" name="Insert" value="Insert"> 
    <input type="submit" name="Update" value="Update"> 
</form> 

像這樣在服務器端進行處理:

if(!empty($_REQUEST['Update'])){ 
    //Run update logic here.. 
} 
elseif(!empty($_REQUEST['Insert'])){ 
    //Run insert logic here... 
} 

如果JavaScript的submit()功能POST陣列,將在註冊兩個按鈕使用此有效標記/邏輯打破應用程序,因此它們默認省略了submit輸入。

因此,您的Javascript解決方法(觸發點擊提交按鈕而不僅僅是表單)是正確的方法。

+0

好吧我想我必須使用'click()'方法。謝謝你的解釋。 – stackunderflow 2013-03-08 19:23:09