使用preventDefault和.remove()的有趣行为 - 我可以依赖于此吗?

时间:2013-01-24 01:24:26

标签: jquery ajax forms

我设置了一个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键仍然需要工作,但我显然只想在按钮出现时提交一次表单...

0 个答案:

没有答案