您的代码有一些问题:
1)当您.rules('add')
在多个元素的选择器上使用该方法时,您必须将其嵌套在 jQuery 中.each()
,否则它将不会应用于所有匹配的元素。
$('.newinput').each(function() {
$(this).rules('add', {
'required': true
});
});
但是,您可能.rules()
完全可以跳过。请参阅下面的第 2 项。
2)您可以完全忘记上面的第 1 项,因为您只是在尝试创建这些新字段required
。只需在创建它们时添加一个required="required"
属性(我看到您已经完成了),您根本不需要担心.rules('add')
方法。或者,您可以class="required"
改用,这是我为下面的演示选择的方法。
3)这就是为什么没有任何工作:您新添加的元素还必须包含 unique names
。 所有表单输入都需要一个name
属性是插件的要求。这就是插件跟踪元素的方式,因此它们都必须是唯一的。但是,根据您的代码,它们没有。您新创建的元素都具有与name
现有元素相同的精确分配。name
通过添加一个计数器并在每次附加到表单时将其递增来修复它。
$(function () {
validar();
cvFields();
});
function validar() {
$(".validate").validate({
....
});
}
function cvFields() {
var count = 0;
$('#addcvfields').click(function (e) {
e.preventDefault();
count++;
var total = $()
var campos = '' +
....
'<input name="profesorcv_titulo[' + count + ']" type="text" class="form-control required" placeholder="Titulo de Estudio o Experiencia">' +
....
'<select name="profesorcv_tipo[' + count + ']" class="form-control required">' +
....
'<textarea rows="3" name="profesorcv_descripcion[' + count + ']" class="form-control" id="profesorcv_descripcion" placeholder="Describe Brevemente"></textarea>' +
....;
$('#cvfields').append(campos);
});
}