0

我回答了我自己的问题,因为我是个白痴。:)


我已经将一个带有 jQ​​uery 的函数绑定submit()到一个防止默认行为(使用event.preventDefault()and return false)的表单,以便它可以执行客户端验证。该脚本实际上并没有进行任何表单提交(它将它留给另一个脚本)。

现在我想删除该事件并恢复为默认表单行为。我实际上需要将数据(没有 AJAX)发布到另一个页面/网站,但我仍然想使用我编写的脚本来验证它。

我考虑过复制表单 HTML 并以这种方式提交,但这是最后的手段。

我试过使用unbind('submit')但是什么也没做。我猜它实际上也取消了默认行为。

我能做些什么?默认行为是否仍然绑定到表单,只是未使用?

注意:我不能修改验证脚本,也不能取消绑定阻止默认行为的特定函数。

可根据要求提供源代码,但大多数代码无关紧要,因此我只会发布片段(如下所示)。

function _preventDefaults() {
    //Prevent form from submitting (until we validate it)...
    $('#myform').submit(function(event) {
        event.preventDefault();
        return false;
    });
}
4

3 回答 3

1

您可以使用本机方法绕过绑定事件。

$("#myform").get().submit();

或者,您可以创建一个新表单并将旧表单中的输入复制到其中。

$("<form></form").attr("action","somepage.php").append($("#myform :input")).submit();

由于您让它重定向,因此它们不再采用旧形式并不重要。

于 2013-07-19T03:00:25.753 回答
0

我相信你想要:

_Form.unbind('submit');

如果您使用的是较新版本的 jQuery,您还可以执行以下操作:

_Form.off('submit');
于 2013-07-19T02:49:53.333 回答
0

我是个白痴。

$('#myform').find('INPUT,TEXTAREA,BUTTON').attr('disabled', 'yes');

我想将这些字段变灰并阻止用户更改值(因为我就是这样的强迫症)。我完全忘记了浏览器不会发送被禁用的输入。

很抱歉浪费大家的时间。下次我将发布取消绑定事件的代码,这将向您展示我刚刚发现的内容。

编辑:更糟糕的是我知道表单正在提交,因为我被重定向到该action位置。格。

于 2013-07-19T03:11:22.453 回答