Javascript yii2 ajax验证表格
我有一个表格输入的表单主控详细信息,并且enabledAjaxValidation=true 到目前为止,表单验证了所有规则,并在提交或更改任何控件的任何值(onchange事件)时显示错误消息。当我使用ajax向表单添加控件时,问题就出现了,后者的行为与原始控件不同,它们不会显示错误消息 使用按钮提交时也一样Javascript yii2 ajax验证表格,javascript,php,jquery,yii2,Javascript,Php,Jquery,Yii2,我有一个表格输入的表单主控详细信息,并且enabledAjaxValidation=true 到目前为止,表单验证了所有规则,并在提交或更改任何控件的任何值(onchange事件)时显示错误消息。当我使用ajax向表单添加控件时,问题就出现了,后者的行为与原始控件不同,它们不会显示错误消息 使用按钮提交时也一样 我认为您需要使用yiiActiveForm.add()函数为任何动态创建的输入手动将新创建/添加的字段添加到验证中 当您单击按钮并通过ajax向表单添加新输入时,您尚未添加当前使用的代
我认为您需要使用
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"});
}
});
阅读更多关于
更新
如果您不希望为每个输入手动添加验证函数,并且您有表格输入,则可以访问任何已创建的类似字段,并从中绑定验证函数
例如,在上面的示例中,如果名称
字段是表格格式的,并且属于模型联系人
,并且您已经在表单#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
});
使用下面的代码
error:函数(jqXHR、textStatus、errorshown){
stopLoader('.modal content');
$('.csv_错误').show();
如果(jqXHR.status==422){
var responseText=$.parseJSON(jqXHR.responseText);
$.each(responseText.errors,函数(键,值){
$('.csv_error ul')。追加(''+value+' ');
});
}否则{
var responseText=$.parseJSON(jqXHR.responseText);
$('.csv_error ul')。追加(''+responseText.message+' ');
}
}