我有一个用于表格输入的表单母版详细信息,并且具有enabledAjaxValidation = true
到目前为止,该表单可以验证所有规则,并在提交或更改任何控件的任何值(onchange事件)时显示错误消息。当我使用ajax将控件添加到表单时,问题就来了,后者的行为不像原始的那样,它们不显示错误消息。
使用按钮提交时相同 我认为
答案 0 :(得分:1)
您需要使用yiiActiveForm.add()
函数将新创建/添加的字段手动添加到验证中,以用于任何动态创建的输入。
当您单击按钮并通过ajax向表单添加新输入时,您尚未添加当前正在使用的代码。因此,您需要做的就是在收到响应并将输入追加到表单后,只需使用以下代码添加新输入即可。
注意:相应地更改表单和字段属性
$('#form-id').yiiActiveForm('add', {
id: 'input-id',
name: 'input-name',
container: '.field-input',
input: '#input-id',
error: '.help-block',
validate: function (attribute, value, messages, deferred, $form) {
yii.validation.required(value, messages, {message: "Validation Message Here"});
}
});
更新
如果您不希望为每个输入手动添加验证功能,并且具有表格输入,则可以访问任何已创建的类似字段并从中绑定验证功能。
例如,在上面的示例中,如果name
字段是表格形式的并且属于模型Contact
,并且您已经具有以#contact-0-name
格式填充的名称字段,则可以使用yiActiveForm.find()
函数用于访问该字段的属性并分配现有的验证。参见下面的示例
var fieldAttributes = $("#form-id").yiiActiveForm("find", 'contact-0-name');
$('#form-id').yiiActiveForm('add', {
id: 'contact-1-name',
name: '[1][name]',
container: '.field-name',
input: '#contact-1-name',
error: '.help-block',
validate: fieldAttributes.validate
});
答案 1 :(得分:1)
使用类似以下代码的东西
error: function(jqXHR,textStatus,errorThrown) {
stopLoader('.modal-content');
$('.csv_errors').show();
if(jqXHR.status==422){
var responseText = $.parseJSON(jqXHR.responseText);
$.each(responseText.errors,function(key,value){
$('.csv_error ul').append('<li>'+value+'</li>');
});
}else{
var responseText = $.parseJSON(jqXHR.responseText);
$('.csv_error ul').append('<li>'+responseText.message+'</li>');
}
}