Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从表单中删除jQuery验证?_Javascript_Jquery_Validation - Fatal编程技术网

Javascript 如何从表单中删除jQuery验证?

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验证插件验证表单,如果单击某个链接,我希望删除验证并提交表单

我正在用javascript提交表单,比如
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()
提交表单会删除这些数据,而你的方式是唯一适合我的方式!谢谢