2011-10-13 119 views
4

我想在一些複雜的檢查後手動提交表單。因爲檢查涉及用戶交互,所以整個檢查過程不是同步完成的。下面是這種情況:如何添加一個post參數到手動表單提交?

  1. 用戶點擊一個按鈕(一個HTML <button id='button-id'>標籤)
  2. 我阻止按鈕的默認操作(這是表單提交)
  3. 我做一個複雜的檢查。
  4. 在檢查過程中的某個地方,我顯示一個對話框並等待用戶回覆(這裏,原始檢查函數繼續並返回)
  5. 我爲該對話框提供回調函數,當用戶觸發並運行時關閉它(正面或負面的結果)
  6. 現在,我應該提交表格,但原始HTML <button id='button-id'>應張貼爲successful control。換句話說,我應該將按鈕標籤的name作爲發佈參數之一添加到服務器。

我使用jQuery的$('#form-id').submit()方法。我如何將<button>元素的name添加到HTTP Post參數中?

+1

而不是直接調用'$('#形式 - id')。submit()',你可以設置一個標誌,驗證是否結束並調用'$('#button-id')。click()'然後觸發'$('#form-id ').submit()'而不是驗證。不知道這是否有效,但你可以試試看。 –

+0

是@FelixKling,那是我們的第一個解決方案。感謝您的建議。但這只是一個破解。我們想知道我們是否可以添加某些內容來發布參數。這似乎是直截了當的解決方案。 :) –

+0

你也可以在表單中插入一個隱藏字段,名字與'

回答

4

你可以在提交前追加一個隱藏字段表單 -

$('<input>').attr({ 
    type: 'hidden', 
    id: 'buttonid', 
    name: 'buttonid', 
    value: yourbuttonidvar 
}).appendTo('#form-id'); 
+0

這只是另一個黑客。但它是一個很好的。 +1。 –

+0

@ ipr101,這不是這個問題的答案。但這是一個很好的解決方案;) –

0

而不是使用一個按鍵式的,爲什麼不使用

<input type="submit" name="commit" id="button_id" ...> 
+0

你沒有明白我的意思。控制本身並不重要。重要的是我取消了原來的行爲。但最後,我想把它作爲HTTP Post中的一個成功控件。 –

+0

也許不是,但 - 控件的「控件名稱」由其名稱屬性給出。我認爲你想解決的問題是用一個按鈕,名稱沒有提交,輸入提交,它是 – chrispanda

相關問題