我回答了自己的问题,因为我是个白痴。 :)
我将一个带有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;
});
}
答案 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