我设置了一个AJAX表单(实际上我正在制作另一个就地编辑插件)并为点击按钮设置了一个AJAX绑定:
// Do default submit and cancel options.
$editor.on('click' + namespace, '.ok', function(e) {
console.log('clicked ok');
submit($original);
});
(这里$ editor是表单,$ original是正在编辑的span元素;提交后,我需要再次显示span元素。表单包含<button>
类型{{ 1}}和类submit
。)
令我惊讶的是,即使我忽略了.ok
或其他任何内容,默认的表单操作实际上被抑制了。我最终追溯到AJAX提交例程最终会这样做的事实:
.preventDefault()
即。歼灭整个表格。它似乎工作,即使我只是.detach()它,但是。
可以依赖这种行为吗?它应该依赖吗?表单突然消失是否会阻止浏览器以正常方式提交,还是在调度事件之前缓存了信息? (有没有任何网络标准可以说明这一点?)是否会导致异常(甚至崩溃?)某些浏览器将表格从脚下移开?如果是这样,除了使用.preventDefault?
之外,还有什么其他含义对于正确设计附录:似乎按下通常提交表单的Enter键,实际上也会为OK按钮生成$editor.remove();
事件!这应该发生吗?同样,在Enter-key处理程序中删除表单似乎可以防止发生点击。
问题在于,因为我正在制作一个插件,我打算考虑OK按钮实际上不会附加到表单的可能性;在这种情况下,Enter键仍然需要工作,但我显然只想在按钮出现时提交一次表单...