這個問題在這里已經有了答案: FormData 不包括按鈕的值 (3 個回答) 昨天關閉。
當我偵聽 a<form>的submit事件并獲取表單的 時FormData,例如通過 XHR 提交它時,缺少提交按鈕的資料:
<form>
<input type="text" name="x" value="foo" />
<input type="hidden" name="y" value="bar" />
<button type="submit" name="submit1" value="bar">submit1</button>
<input type="submit" name="submit2" value="submit2" />
</form>
FormData 將具有x和y,但既不是submit1也不是submit2。在 Pen 中試一試。應該我想它包含其中的一個,即一個觸發提交-就像將被發送到資料action。
我可以做點什么onsubmit,比如
form.onsubmit = function (evt) {
var fd = new FormData(form);
fd.append(evt.submitter.name, evt.submitter.value);
// process fd...
});
但是SubmitEvent.submitter是相當新的,特別是沒有 IE,在撰寫本文時只有 Safari 的 TP。
有沒有辦法讓提交到 FormData 而不做像聽所有表單輸入的點擊事件和創建隱藏輸入的解決方法?
在接受答案后,我確實實作了一個“polyfill”:
document.querySelectorAll('form').forEach(function (form) {
// query might miss <button>s without @type
form.querySelectorAll('[type="submit"]').forEach(function (submit) {
submit.addEventListener('click', function () {
var input = document.createElement('input')
input.setAttribute('type', 'hidden')
input.setAttribute('name', this.name)
input.setAttribute('value', this.value)
this.form.appendChild(input)
})
})
})
uj5u.com熱心網友回復:
有沒有辦法讓提交到 FormData 而不做像聽所有表單輸入的點擊事件和創建隱藏輸入的解決方法?
不。
SubmitEvent.submitter 是為了消除對單獨點擊事件的需要而添加的功能。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/383125.html
標籤:javascript html 形式 表单数据
上一篇:Django表單欄位到HTML
