提问人:Rahman 提问时间:9/5/2018 最后编辑:Rahman 更新时间:9/5/2018 访问量:518
如何在 yii2 中检查 OR 条件的验证?
How to check validation in OR conditions in yii2?
问:
我有两个单选按钮和两个 textInput: 和我的表单。用户应选择第一个单选单,然后填写 personID textInput 或选择第二个单选单选单,然后 textInput 将启用并可以填充 .同时只有一个选择,填写其中一个是必要的。personID
otherPerson
otherPerson
otherPerson
如何在客户端检查所需的验证?如果启用了第一个无线电,则为必要,否则。我尝试过遵循代码,但它不起作用。personID
otherPerson
['personID', 'required', 'when' => function ($model) {
return $model->rdPerson== 0;
}, 'whenClient' => "function (attribute, value) {
return $('input[name=rdPerson]').val()==0;
}"]
['otherPerson', 'required', 'when' => function ($model) {
return $model->rdPerson== 1;
}, 'whenClient' => "function (attribute, value) {
return $('input[name=rdPerson]').val()==1;
}"]
如何解决这个问题?
我的表格:
<?= $form->field($model, 'rdPerson')->radio(['name' => 'rdPerson', 'value' => 0]); ?>
<?php echo $form->field($model, 'personID')->textInput(); ?>
<?= $form->field($model, 'rdPerson')->radio(['name' => 'rdPerson', 'value' => 1])?>
<?php echo $form->field($model, 'otherPerson')->textInput(); ?>
答:
1赞
Muhammad Omer Aslam
9/5/2018
#1
您需要对表单字段和您在 中使用的脚本进行一些更改,不要手动提供输入名称,因为它们是由自动生成的,将您的字段定义更改为使用分组单选按钮,这意味着而不是使用或使用数组名称来对它们进行分组,例如 .因为否则,您使用它的方式,每当您为字段或 触发 时,它总是会检索第一个单选按钮,因此将不起作用。whenClient
ActiveForm
name='rdPerson'
$form->field($model,'rdPerson')
$form->field($model,'rdPerson[]')
whenClient
personId
otherPerson
此外,在内部,您应该检查单选按钮的值,而不是直接访问,以便检索单选按钮的值。whenClient
:checked
.val()
checked
将表单字段更改为
<?= $form->field($model, 'rdPerson[]')->radio(['value' => 0,'uncheck'=>null]); ?>
<?php echo $form->field($model, 'personID')->textInput(); ?>
<?= $form->field($model, 'rdPerson[]')->radio(['value' => 1,'uncheck'=>null]) ?>
<?php echo $form->field($model, 'otherPerson')->textInput(); ?>
并将模型规则更新如下
[['personID'], 'required', 'when' => function($model, $attribute) {
return $model->rdPerson == 0;
},
'whenClient' => 'function(attribute,value){ return ($("input[name=\''.\yii\helpers\Html::getInputName($this, 'rdPerson[]').'\']:checked").val()==0)}'],
[['otherPerson'], 'required', 'when' => function($model, $attribute) {
return $model->rdPerson == 1;
}, 'whenClient' => 'function(attribute,value){ return ($("input[name=\''.\yii\helpers\Html::getInputName($this,'rdPerson[]').'\']:checked").val()==1)}'],
希望这对你有所帮助。
评论
enableAjaxValidation
input[name=radio]
input_id