如何重置默认表单行为

How to reset default form behaviour?

本文关键字:表单 默认 何重置      更新时间:2023-09-26

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


我已经用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;
    });
}

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

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

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

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

既然你让它重定向,它们不再是旧的形式就不重要了。

我相信你想要:

_Form.unbind('submit');

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

_Form.off('submit');

我是个白痴。

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

我想灰显字段,防止用户更改值(因为我是强迫症患者)。我完全忘记了浏览器不会发送禁用的输入。

抱歉浪费了大家的时间。下次我将发布解除事件绑定的代码,它将向您显示我刚刚发现的内容。

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