A<form>有不同的按鈕。在提交事件中,我想知道單擊了哪個按鈕。我的想法是formaction按鈕上的屬性可以用于此。在MDN上,它說該formaction屬性:
覆寫按鈕的表單所有者的 action 屬性。
但是在獲取表單操作時,此值不會根據formaction. 那么我怎樣才能獲得價值,formaction或者你有什么其他的建議來解決這個問題?
document.forms.form01.addEventListener('submit', e => {
e.preventDefault();
console.log(e.target.action);
switch (e.target.action) {
case 'a':
// do "a" stuff
break;
case 'b':
// do "b" stuff
break;
}
});
<form name="form01" action="default">
<button formaction="a">A</button>
<button formaction="b">B</button>
</form>
uj5u.com熱心網友回復:
退房e.submitter。它會給你提交表單的元素
uj5u.com熱心網友回復:
對此有一點小技巧,如果將 aformaction附加到按鈕以覆寫提交事件。您需要在發送提交事件后獲取當前具有焦點的元素,因此您需要使用document.activeElement來獲取活動元素值。
document.forms.form01.addEventListener('submit', e => {
e.preventDefault();
let formAction = e.target.getAttribute("action");
let activeElementAction = document.activeElement.getAttribute("formaction");
let action = activeElementAction || formAction;
console.log(action);
switch (action) {
case 'a':
// do "a" stuff
break;
case 'b':
// do "b" stuff
break;
}
});
<form name="form01" action="default" method="get">
<button type='submit' formaction="a">A</button>
<button type='submit' formaction="b">B</button>
</form>
uj5u.com熱心網友回復:
添加value到button 然后使用submitter如下。
document.forms.form01.addEventListener('submit', e => {
e.preventDefault();
console.log(e.submitter.value);
switch (e.submitter.value) {
case 'a':
// do "a" stuff
break;
case 'b':
// do "b" stuff
break;
}
});
<form name="form01" action="default">
<button value="a">A</button>
<button value="b">B</button>
</form>
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/435025.html
標籤:javascript html 形式
