如何在jQuery中获取Yii2 radioList被点击选项的值?
问题原因
你当前将onClick事件配置在了单选组的外层容器属性中,并非绑定到每个单选按钮的<input>元素上。事件触发时this指向的是外层容器元素,该元素没有值属性,所以val()返回空。
解决方案1 调整行内事件绑定配置
修改PHP端表单代码,将点击事件放到单选按钮的itemOptions配置项中,确保事件绑定到每个单选输入元素上:
<?= $form->field($model, 'system_user')->inline(true)->radioList( ["Yes"=>"Yes","No"=>"No"], [ 'id' => 'system_user', 'itemOptions' => [ 'onclick' => 'getValue(this.value)' ] ] ) ?>
原有JavaScript代码不用修改即可正常弹出对应值。
解决方案2 用jQuery事件绑定(更易维护,无侵入)
不用修改原有PHP代码,移除原来加的onClick属性,直接用事件监听实现:
$(function() { // 监听单选组的选中变化事件,适配鼠标点击和键盘选择场景 $('#system_user input[type="radio"]').on('change', function() { alert($(this).val()); }); });
这种方式不需要在行内写JS逻辑,后续修改逻辑不用动后端PHP代码。
内容的提问来源于stack exchange,提问作者Roman
相关产品推荐
相关产品推荐

