Javascript yii2 ajax验证表格

Javascript yii2 ajax验证表格,javascript,php,jquery,yii2,Javascript,Php,Jquery,Yii2,我有一个表格输入的表单主控详细信息,并且enabledAjaxValidation=true 到目前为止,表单验证了所有规则,并在提交或更改任何控件的任何值(onchange事件)时显示错误消息。当我使用ajax向表单添加控件时,问题就出现了,后者的行为与原始控件不同,它们不会显示错误消息 使用按钮提交时也一样 我认为您需要使用yiiActiveForm.add()函数为任何动态创建的输入手动将新创建/添加的字段添加到验证中 当您单击按钮并通过ajax向表单添加新输入时,您尚未添加当前使用的代

我有一个表格输入的表单主控详细信息,并且enabledAjaxValidation=true

到目前为止,表单验证了所有规则,并在提交或更改任何控件的任何值(onchange事件)时显示错误消息。当我使用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+'
  • '); } }