如何重置默认表单行为?

时间:2013-07-19 02:41:32

标签: javascript jquery html forms

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


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

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

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

我尝试过使用unbind('submit')但是没有做任何事情。我猜它实际上也解除了默认行为。

我该怎么办?默认行为是否仍然绑定到表单,只是没有使用?

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

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

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

3 个答案:

答案 0 :(得分:1)

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

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

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

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

由于你让它重定向,所以它们不再是旧形式也不重要。

答案 1 :(得分:0)

我相信你想要:

_Form.unbind('submit');

如果你使用的是更新版本的jQuery,你也可以这样做:

_Form.off('submit');

答案 2 :(得分:0)

我是个白痴。

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

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

很抱歉浪费你的时间。下次我将发布取消绑定事件的代码,这将显示我刚刚找到的内容。

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