【发布时间】:2012-03-08 19:51:50
【问题描述】:
我有以下mysql表:
| id | Title | Windows | Linux | IDE | GUI | RAD |
------------------------------------------------------------
| 1 | Software_1 | 1 | 0 | 1 | 0 | 0 |
------------------------------------------------------------
| 2 | Software_2 | 0 | 1 | 0 | 1 | 0 |
我想通过查询 mySQL 数据库来填充表单。到目前为止,我能够填充输入字段、文本区域和复选框,但我完全坚持填充 radiobuttons。请注意,mySQL 存储 boolean 值:复选框(Windows、Linux) 和单选按钮(IDE、GUI、RAD)
这是从 dB 中检索数据并将其转换为 JSON 的 PHP 部分:
while($review = mysql_fetch_array($qry)) {
$arr = array('id_field' => $review['id'],
'title' => $review['title'],
'homepage' => $review['link_homepage'],
'windows' => $review['Windows'] == "1",
'linux' => $review['Linux'] == "1",
'ide' => $review['IDE'] == "1",
'gui' => $review['GUI'] == "1",
'rad' => $review['RAD'] == "1"
);
echo json_encode($arr);
}
这是表格:
<form name="form" id="edit_review" method ="post" action="review.php">
Language name: <input type="text" size="34" value="" name="title"/>
Windows <input type="checkbox" name="windows" />
Linux <input type="checkbox" name="linux" />
IDE <input type="radio" name="environment" id="ide" value="ide"/>
GUI <input type="radio" name="environment" id="gui" value="gui"/>
RAD <input type="radio" name="environment" id="rad" value="rad"/>
</form>
这是 jQuery 代码:
$(".editlink").click(function() {
$.get("lists.php", {param2: $(this).attr('id')},
function(data) {
jsonOBJ = jQuery.parseJSON(data);
for (var key in jsonOBJ) {
$(":input[name='" + key + "']").val(jsonOBJ[key]);
$(":input[name='" + key + "']").attr("checked", jsonOBJ[key]);
}
}
);
return false;
});
字符串:
$(":input[name='" + key + "']").attr("checked", jsonOBJ[key]);
仅适用于复选框。单选按钮“名称”是“环境”,并且所有三个单选按钮必须相同。所以,当然,上面的线路不起作用。我尝试将其更改为:
$(":input[id='" + key + "']").attr("checked", jsonOBJ[key]);
我在单选按钮中添加了“id”,如下所示:
IDE <input type="radio" name="environment" id="ide" value="ide"/>
并且我注意到(使用“警报”)正确的复选框被选中,但只要循环继续,就会立即取消选中。为什么单选按钮未选中而复选框未选中?我该如何解决?
【问题讨论】:
-
您使用的是什么版本的 jquery。这取决于您是否使用.attr或.prop。请参阅此答案以获取更多信息:stackoverflow.com/questions/977137/…
-
天哪! 解决了!花了两天时间!谢谢 bsimic 我将 .attr 更改为 .prop 并且它突然起作用了。
-
很高兴我可以提供帮助。我会将其添加为“解决方案”,因此如果您可以将其作为答案,也许它可以帮助其他正在搜索的人!