readonly
属性对radio
、select
、checkbox
这三个表单无效,设置disabled
属性后,读取不到值
在网络上找到思路,总结出如下三种解决方案
- 把表单值存入
<input type="hidden" >
中,如果代码中要改变选中则同时要赋值给该输入框 - 提交表单前先移除
disabled
属性,不提交表单时或提交表单后设置disabled
属性(代码中要改变选中前先移除disabled
属性) - 只设置没有选中的input框
disabled
属性 (代码中要改变选中时先移除disabled
属性)
其中第三种方案是我自己认为最优解决方式,示例如下:
function disabledRadioGwf(val) {
// 取消禁用
$("input:radio[name='gwf']").removeAttr("disabled").removeProp("disabled");
var value = "N";
if (!val) {
value = "Y";
}
$("input:radio[name='gwf'][value='" + value + "']").attr("checked", true).prop("checked", true);
// 禁止选择
$("input:radio[name='gwf']:not(:checked)").attr("disabled", true).prop("disabled", true);
}