如何检查单选按钮

问题描述:

我有以下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数据库来填充表单。到目前为止,我能够填充输入字段,textareas和复选框,但我绝对坚持填充单选按钮。请注意,MySQL存储布尔值:复选框(在Windows,Linux) 和单选按钮(IDE,GUI,RAD)

这是从数据库中检索数据,并将其转换成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]); 

仅适用于复选框。 Radibuttons'name'是'environment',对于所有三个单选按钮必须是相同的。所以,当然上面的线路不工作。我试图将其更改为:

$(":input[id='" + key + "']").attr("checked", jsonOBJ[key]); 

和我说“ID”的单选按钮,如下所示:

IDE <input type="radio" name="environment" id="ide" value="ide"/> 

我注意到(使用“警报”)正确的复选框被选中但一旦LOOP继续,立即取消选中。为什么单选按钮没有选中,复选框不是?我该如何解决它?

+0

你使用的是什么版本的jquery。这取决于你是否使用.attr或.prop。请参阅此答案的更多信息:http://stackoverflow.com/questions/977137/how-to-set-radiobutton-in-jquery – bsimic 2012-02-17 12:09:42

+0

哦,我的上帝! **已解决!**花了两天时间!谢谢** bsimic **我将.attr改为.prop,并且它突然运行。 – Nicero 2012-02-17 12:39:43

+0

很高兴我能帮到你。我会把它作为一个“解决方案”加入,所以如果你可以把它作为答案,也许它可以帮助其他人搜索某一天! – bsimic 2012-02-17 14:12:07

这取决于你正在使用的jQuery的版本。请看:How to reset radiobuttons in jQuery so that none is checked为您的答案。

这会看起来像一个愚蠢的建议,但你有没有正确地分组你的单选按钮?

如果单选按钮没有选中,可能是因为正在处理同一组中的另一个单选按钮。

看起来好像您正在尝试检查来自同一组的所有单选按钮,这是不可能的。只有一个可以检查。

如果要检查所有的选项,你必须使用复选框或每个单选按钮的name属性设置为不同的

的东西只有一个可检查:

IDE <input type="radio" name="environment" id="ide" value="ide"/> 
GUI <input type="radio" name="environment" id="ide" value="ide"/> 
RAD <input type="radio" name="environment" id="ide" value="ide"/> 

一切都可以检查(虽然失败单选按钮的点):

IDE <input type="radio" name="environment1" id="ide" value="ide"/> 
GUI <input type="radio" name="environment2" id="ide" value="ide"/> 
RAD <input type="radio" name="environment3" id="ide" value="ide"/> 

它也可以是,改变经由checked属性jQuery(无论是否为true)会禁用其他单选按钮,因此可能尝试使用jQuery的find()来检查相关单选按钮,而不是循环播放它们。

+0

嗨JackalopeZero,你可以在上面的代码中看到('表单'部分),三个单选按钮被正确地分组在一起(它们都具有相同的名称),但每个都有不同的ID和VALUE。 – Nicero 2012-02-17 12:30:42