HTML表单覆盖默认提交动作及删除确认提示功能异常咨询
问题根源
- 本身不支持自定义
action属性,你给删除按钮写的action="/deleteanalyst"是无效的非标准属性,浏览器会直接忽略,因此表单始终提交到<form>标签上定义的默认地址 - 你写的二次确认逻辑本身没有问题,
preventDefault仅在用户点击取消时触发,并不是导致提交地址错误的原因
修正方案
方案一(推荐,代码改动最小)
使用HTML5原生的formaction属性,这个属性的作用就是给提交按钮单独指定提交地址,覆盖表单的默认action,仅需修改删除按钮的一行代码即可:
<!-- 把原来的action替换为formaction --> <input type="submit" value="Delete" formaction="/deleteanalyst" id="deletebutton">
其余代码不需要修改,点击删除按钮时浏览器会自动识别formaction属性,确认后就会提交到/deleteanalyst。
方案二(兼容所有旧浏览器)
如果需要适配不支持HTML5的老旧浏览器,可以不修改按钮属性,直接调整JS逻辑,用户确认删除时手动修改表单的提交地址:
var delbutton = document.getElementById("deletebutton") delbutton.addEventListener("click", function (event) { if (!confirm('Confirm you wish to delete this entry?')) { event.preventDefault(); return; } // 手动修改表单的提交地址为删除接口 this.form.action = "/deleteanalyst"; }, false);
内容的提问来源于stack exchange,提问作者anakaine
相关产品推荐
相关产品推荐

