JQuery Validate – 使用函数重置表单,resetForm()将不起作用
我正在使用JQuery Validator,我在stackoverflow中看到了很多解决方案,将所有validation放在“var”中然后使用这个“var”.resetForm()来重置对象,但这不起作用,这是我的JSFiddle用我的榜样。
我的意图是:使用相同的Form,两种类型的块,内部有不同的输入,当其中一个块发生变化时,我调用一个方法来重置validation,这样我可以在尝试提交时再次重用Validate。
var validate = $('#cad_principal').validate({ errorLabelContainer: $('.form_validate_message'), wrapper:'li', rules:{ cad_pf_cpf:{required:true, minlength:11} }, messages:{ cad_pf_cpf:{required:"O campo CPF precisa ser preenchido.", minlength:"O campo CPF deve conter no mínimo 11 caracteres."} }, submitHandler: function(form) { $(form).submit(); } }); function cancelForm(){ validate.resetForm(); }
您尝试调用的函数( cancelForm()
)不存在。 试试这个:
$(function() { var validate = $('#cad_principal').validate({ errorLabelContainer: $('.form_validate_message'), wrapper:'li', rules:{ cad_pf_cpf:{required:true, minlength:11} }, messages:{ cad_pf_cpf:{required:"O campo CPF precisa ser preenchido.", minlength:"O campo CPF deve conter no mínimo 11 caracteres."} }, submitHandler: function(form) { $(form).submit(); } }); $('#cad_principal a').click(function() { validate.resetForm(); }); });
基本上,您需要将代码包装在DOMReady事件中,然后使用事件绑定来挂接表单。 请记住,在DOM准备就绪时, validate
将只包含一个变量。 这是一个有效的jsFiddle 。
-
如前所述,
cancelForm()
尚不存在。 将所有内容包装在DOM ready事件处理函数中。 -
其次,您正在使用jQuery,因此可以使用jQuery的
.on()
方法将内联JavaScript简单地替换为click
处理程序。 -
最后,您不需要在
form.submit()
。 这是多余的,因为通过省略自定义的submitHandler
回调,您将通过插件的默认值获得submit()
。
我还添加了$('form').get(0).reset();
cancel
click
处理程序以清除表单内容。 根据文档 , resetForm()
将需要另一个插件…
重置受控表格。
将输入字段重置为其原始值(需要表单插件) ,删除指示无效元素的类并隐藏错误消息。
试试这个:
jQuery :
$(document).ready(function () { var validate = $('#cad_principal').validate({ errorLabelContainer: $('.form_validate_message'), wrapper: 'li', rules: { cad_pf_cpf: { required: true, minlength: 11 } }, messages: { cad_pf_cpf: { required: "O campo CPF precisa ser preenchido.", minlength: "O campo CPF deve conter no mínimo 11 caracteres." } } }); $('#cancel').on('click', function (e) { e.preventDefault(); validate.resetForm(); $('form').get(0).reset(); }); });
HTML :
工作演示: http : //jsfiddle.net/rnryw/
如果没有任何作用,那么尝试这种方法(特别是为清除数据目的):
1-表格html:
2- Jqueryvalidation
// you can add error fields var validator = $("#cad_principal").validate({ focusCleanup: true });
3-重置表单
$('[type="reset"]').on('click', function(){ $("#cad_principal").closest('form').find("input[type=text], textarea").val(""); $('input:checkbox').removeAttr('checked'); validator.resetForm(); return false; });