javascript - yii2 使用 HTML::checkboxlist 在 index.php 中获取检查值
问题描述
我有一个要放入checkboxList
.
$data = [
['id' => '1', 'name' => 'emel'],
['id' => '2', 'name' => 'makluman'],
['id' => '3', 'name' => 'memo'],
];
$list = ArrayHelper::map($data, 'id', 'name');
return Html::checkboxList(
'roles',
[],
$list,
[
'itemOptions' => [
'onclick' => 'myFunction()',
'id' => 'check',
],
]
);
我可以返回结果,问题是我无法获取我检查的数据。
下面是我的脚本代码:
<script>
function myFunction() {
result = $('input[type="checkbox"]:checked').val();
console.log(result);
}
</script>
当我选中第一个框时,它会得到值 1,但是当我选中第二个框时,它会返回 1,而它应该返回值 2。当我取消选中第一个框时,它会返回 2。
我希望它保存在一个变量中。例如:
我选中第一个框,
a = ["1"]
然后我检查第二个框
a = ["1","2"]
等等。
请帮我。
解决方案
你应该看的几件事
选中第二个复选框时选择了多个元素,您需要迭代所有选中的框并使用 jquery 推送到数组中,
$.each()
否则它将只返回第一个元素值。您应该使用事件委托进行绑定单击,请参阅Why。
您提供了一个
id
viaitemOptions
,checkboxList()
这在技术上是错误的,因为它会将相同的分配id
给所有复选框,并且您将在使用它们时遇到奇怪的行为javascript
orhtml
,您应该使用item
接受回调function ($index, $label, $name, $checked, $value)
并为每个输入提供唯一 ID的选项.
请参阅下面的代码如何使用以上所有内容
在您的视图顶部添加以下内容
$js = <<<JS function myFunction() { var result=[]; $('input[type="checkbox"]:checked').each(function(index,checkbox){ result.push($(checkbox).val()); }); console.log(result); } $(document).on("click",'input[type="checkbox"]',myFunction); JS; $this->registerJs($js, \yii\web\View::POS_READY);
然后将复选框的代码更新到下面
$data = [ ['id' => '1', 'name' => 'emel'], ['id' => '2', 'name' => 'makluman'], ['id' => '3', 'name' => 'memo'], ]; $list = ArrayHelper::map($data, 'id', 'name'); echo Html::checkboxList('roles', [], $list, [ 'item' => function ($index, $label, $name, $checked, $value) { $return = '<label>'; $return .= '<input type="checkbox" name="' . $name . '" value="' . $value . '" ' . $checked . ' id="check-' . $index . '" />'; $return .= '<span>' . ucwords($label) . '</span>'; $return .= '</label>'; return $return; }, ]);
推荐阅读
- c# - 如何使用 RESTSharp 获取响应标头?
- c# - 使用 ASP.NET 的 JSON 输出不正确
- laravel - Laravel Dompdf 是否支持子集 otc 字体?
- jquery - 使用 fadeOut() 后,消息将不再显示
- python-3.x - 在 AWS Lambda 中上传时 botocore 中的 python3 zipfile
- spring - Blueprint/Spring 无法找到已将项目从 Talend 6.5.1 移至 7.1.1 的“classpath:path/to/file.ext”资源
- python - matplotlib.close() 不关闭绘图
- css - 如何通过scss定位工具提示
- python - PyInstaller 中的 Pandas、Numpy
- python - numpy np.zeros((1,2)) 与 np.zeros((2,)) 的差异