Javascript 如何从表单中删除jQuery验证?
我正在使用jQuery验证插件验证表单,如果单击某个链接,我希望删除验证并提交表单 我正在用javascript提交表单,比如Javascript 如何从表单中删除jQuery验证?,javascript,jquery,validation,Javascript,Jquery,Validation,我正在使用jQuery验证插件验证表单,如果单击某个链接,我希望删除验证并提交表单 我正在用javascript提交表单,比如jQuery('form#listing')。submit(),因此我必须用javascript删除验证规则/函数 问题是我不知道怎么做。我尝试过类似jQuery('form#listing').validate({})和jQuery('form#listing')。validate=null,但没有运气。您可以向元素(按钮,输入)添加一个css类cancel,使其跳过验
jQuery('form#listing')。submit()
,因此我必须用javascript删除验证规则/函数
问题是我不知道怎么做。我尝试过类似
jQuery('form#listing').validate({})
和jQuery('form#listing')。validate=null,但没有运气。您可以向元素(按钮,输入)添加一个css类cancel,使其跳过验证您可以删除具有以下内容的节点事件:
您可能正在寻找的是,验证插件还可以从提交事件中取消分配自己:
jQuery('form#listing').validate({
onsubmit : false
});
对于这两种情况,您应该能够通过调用.submit()
来提交表单:
jQuery('form#listing').unbind('submit').submit();
jQuery('#form').validate().currentForm = '';
触发DOM submit方法以跳过验证:
$("#listing")[0].submit();
jQuery('#form').validate();
我最近升级到了Jörn的validator脚本的1.5.5版本,removeValidator函数已被弃用
...
jQuery.extend(
jQuery.fn,
{
removeValidator: function(){
this.unbind();
jQuery.removeData(this[0], 'validator');
}
...
这似乎对我现在起作用了:
var form = $('#my_form_id').get(0);
$(form).removeData('validate');
确实有效。您也可以通过以下方式使用公共“规则”功能:
$('input, select, textarea').each(function() {
$(this).rules('remove');
});
这就是我正在使用的;) 如果您想打开/关闭表单验证(例如,对付款类型的不同验证…),我发现没有任何其他方法有帮助
我必须做的事情(这不是一个很好的解决方案,但确实有效)
设置您的验证:
$("#listing")[0].submit();
jQuery('#form').validate();
禁用表单:
jQuery('form#listing').unbind('submit').submit();
jQuery('#form').validate().currentForm = '';
再次启用表单:
jQuery('#form').validate().currentForm = jQuery('#form')[0];
对于表单输入的所有标记:
$('#myform').validate().settings.ignore = '.valid';
$('input').addClass('valid');
它对我有用
$("#formName").validate().settings.ignore = "*";
请参阅:我正在使用javascript提交表单,很不幸,这不起作用。幸运的是,我没有做任何复杂的事情,所以这对我来说很有效。谢谢。也可以在submit元素上使用html5属性formnovalidate只有unbind方法对我有效。使用jQuery 1.3.2和Validate 1.5.5meh。现在我正在使用上面Jorn提到的方法。当我想绕过验证时,我可以使用它:bypassValidator=function(){$(“#btn submit”).bind('click',function(){$('#myForm')[0]。submit();}。)您在这里的方法为我解决了一个稍微不同的问题。我通过Ajax动态加载不同的表单,如果字段名相同,那么现有的验证将应用于它,除非我首先运行上面的代码。谢谢,这今天帮了我的忙。我用ajax提交了一个表单,然后清除了所有输入,这样就可以再次使用它了——这触发了验证器抛出错误消息,就好像用户删除了所有必需的信息一样。我在清除表单之前提交时使用此选项,以避免向用户发送“此字段是必需的”消息:)在尝试其他6种解决方案后适用。为什么jqvalidate如此不可预测?在对其进行黑客攻击之后,上面的代码需要$(form).removeData('validator');在这个命令之后,我再次调用$(“form”).validate(GetSettings());在GetSettings中,我只返回{…,groups:GetValidationGroups(),…},这允许我动态更改验证组。这是一个很好的技巧。谢谢。的确,这是一个很好的技巧,但它并没有回答问题。这个技巧不起作用,而是从表单中删除jquery验证,然后提交formis[0]数组元素?我可以使用[0,1,3]来禁用这些节点吗?这对我来说非常有效。我需要删除已经应用的规则,然后应用更小的规则子集。在我的例子中,我有一个提交按钮(强制执行更多必填字段)和一个保存按钮(仅强制执行数据格式)。提交后,我会得到各种必需的字段验证错误,如果没有数据格式错误,我可以进行保存。不幸的是,如果保存时出现一些验证错误,它也会显示所需的字段验证错误,但这对我来说已经足够接近了。我在这里尝试了一些其他的例子,希望能在没有运气的情况下解决这个问题。我和@KirkLiemohn处于相同的场景中:多个提交按钮,服务器端代码需要知道按下了哪个按钮。调用.submit()
提交表单会删除这些数据,而你的方式是唯一适合我的方式!谢谢