我有下面的HTML代码,我在那里添加项目到购物车,然后最后点击提交。
<div class="form-group">
<div>
<select id="available-options" multiple>
<option value="option1">Option 1</option>
<option value="option2">Option 2</option>
<option value="option3">Option 3</option>
</select>
<button id="add-button" aria-label="Add">Add</button>
</div>
</div>
<div class="box-footer">
<button type="submit" class="btn btn-default">Cancel</button>
<button type="submit" class="btn btn-info pull-right">Update</button>
</div>
字符串
下面是JavaScript
window.onload = function () {
const addButton = document.getElementById("add-button");
addButton.addEventListener("click", () => {
const selected = availableOptions.selectedOptions;
for (let i = 0; i < selected.length; i++) {
const option = selected[i];
selectedOptions.appendChild(option);
}
});
}
型
当我点击add
按钮时,两个按钮事件都被触发了!
2条答案
按热度按时间slsn1g291#
type
是导致提交 form 的 submit。您可以指定 buttontype="button"
或使用event.preventDefault()
阻止默认行为。Demo:
字符串
oo7oh9g92#
尝试在事件处理程序中使用
event.stopPropagation()
。这个问题可能是因为JavaScript管理事件的方式。Javascript默认遵循事件冒泡。所以在这里,当目标事件完成时,它也会调用它的下一个父级事件处理程序,或者更好地说,事件冒泡到其父级,它会一直到最后的DOM事件。所以,为了防止这种情况,我们必须在handler方法中特别提到
event.stopPropagation()
。我想上面的答案会对你有所帮助。我也给了一个关于这个主题的参考链接,请检查这个参考链接。