Yii2 在 whenClient 中将变量连接到 String
Yii2 concatenate a variable to String in whenClient
我正在使用带有验证规则的动态表单,我想让浏览器在提交之前也验证表单,所以我使用了 whenClient
。有一个复选框,单击后不会处理验证...
['dv_number', 'required', 'when' => function ($model) {
return $model->is_cancelled == 1;
}, 'whenClient' => "function (attribute, value) {
console.log(attribute.name);
var firstletter=(attribute.name.charAt(0));
var index='';
if(firstletter==='['){ //when dynamic form is not activated and name of inputs is like [0]dv_number
index=attribute.name.charAt(1);//I get the array index
}else{
index=attribute.name.charAt(9);//dynamic form activated the name of inputs changed like this TblDvBub[0][dv_number].
}
if($('[name=\'TblDvBub[0][is_cancelled][]\']').is(\":checked\"))
{
return false;//validation will not take place
}
else
{
return true;//validation from browser takes place
}
}"
],
所以我使用 index
变量获取索引号。我的问题是将这一行 if($('[name=\'TblDvBub[0][is_cancelled][]\']').is(\":checked\"))
中的 0
替换为索引并使其像这样 if($('[name=\'TblDvBub[index][is_cancelled][]\']').is(\":checked\"))
请注意,从客户端开始的整个代码都包含在 " "
...
我试过这个和很多其他的但都无济于事。
if($('[name=\'TblDvBub[' + index +'][is_cancelled][]\']').is(\":checked\"))
这只是一个 JS/jQuery/PHP 问题。您必须转义选择器名称过滤器中的括号:
if($('[name=TblDvBub\[' + index + '\]\[is_cancelled\]\[\]]').is(\":checked\"))
不太确定,但是当它位于 PHP 中的 "" 字符串中时,您甚至必须将转义字符加倍:
if($('[name=TblDvBub\\[' + index + '\\]\\[is_cancelled\\]\\[\\]]').is(\":checked\"))
我认为这就是问题所在。有帮助吗?第一种或第二种方式正确吗?
参见 jQuery doc(在开头段落中注明)。
我正在使用带有验证规则的动态表单,我想让浏览器在提交之前也验证表单,所以我使用了 whenClient
。有一个复选框,单击后不会处理验证...
['dv_number', 'required', 'when' => function ($model) {
return $model->is_cancelled == 1;
}, 'whenClient' => "function (attribute, value) {
console.log(attribute.name);
var firstletter=(attribute.name.charAt(0));
var index='';
if(firstletter==='['){ //when dynamic form is not activated and name of inputs is like [0]dv_number
index=attribute.name.charAt(1);//I get the array index
}else{
index=attribute.name.charAt(9);//dynamic form activated the name of inputs changed like this TblDvBub[0][dv_number].
}
if($('[name=\'TblDvBub[0][is_cancelled][]\']').is(\":checked\"))
{
return false;//validation will not take place
}
else
{
return true;//validation from browser takes place
}
}"
],
所以我使用 index
变量获取索引号。我的问题是将这一行 if($('[name=\'TblDvBub[0][is_cancelled][]\']').is(\":checked\"))
中的 0
替换为索引并使其像这样 if($('[name=\'TblDvBub[index][is_cancelled][]\']').is(\":checked\"))
请注意,从客户端开始的整个代码都包含在 " "
...
我试过这个和很多其他的但都无济于事。
if($('[name=\'TblDvBub[' + index +'][is_cancelled][]\']').is(\":checked\"))
这只是一个 JS/jQuery/PHP 问题。您必须转义选择器名称过滤器中的括号:
if($('[name=TblDvBub\[' + index + '\]\[is_cancelled\]\[\]]').is(\":checked\"))
不太确定,但是当它位于 PHP 中的 "" 字符串中时,您甚至必须将转义字符加倍:
if($('[name=TblDvBub\\[' + index + '\\]\\[is_cancelled\\]\\[\\]]').is(\":checked\"))
我认为这就是问题所在。有帮助吗?第一种或第二种方式正确吗?
参见 jQuery doc(在开头段落中注明)。