如何重置默认表单行为
How to reset default form behaviour?
我回答了自己的问题,因为我是个白痴。:)
我已经用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
位置。
相关文章:
- 一键提交(阻止默认)多个表单
- 或者在表单上选择默认选项文本(选择1)
- 在表单输入字段中创建默认值
- Pasleyjs更改欧芹表单验证中按钮的默认行为
- 如何从服务器获取和设置表单的默认值
- Vanilla javascript 表单验证,如何撤消防止提交时的默认
- 如何正确处理空的、遗漏的、默认的表单值
- “角度表单”复选框默认值
- 表单提交后防止默认
- 需要使用条纹(更多)重力表单插件将默认付款表单设置为“存档卡”
- 在自动生成的表单上设置默认选中的复选框
- Rail对默认情况下隐藏在表单中的属性进行建模
- 花式框默认关闭在表单重定向后不起作用
- 使用jQuery切换根据选中的复选框隐藏/显示表单提交按钮 - 如何设置默认关闭的提交按钮
- MVC 3,剃刀视图 - 覆盖默认表单帖子
- jQuery向下滑动 - 向上滑动表单 - 默认首次隐藏
- 禁用表单默认行为轨道
- Angular2表单默认的输入值不会在初始点击时设置
- 联系人表单默认值验证
- 如何触发表单验证css类,当有's表单默认数据