如何检查单选按钮

时间:2012-02-17 11:58:40

标签: jquery mysql json

我有以下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和复选框,但我绝对不会填充 radiobuttons 。请注意mySQL存储布尔值:复选框(Windows,Linux) 和radiobuttons(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]);

仅适用于复选框。 Radiobuttons'name'是'environment',对于所有三个radiobutton必须相同。所以,当然上面的行不起作用。我尝试将其更改为:

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

我将' id '添加到radiobuttons,如下所示:

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

我注意到(使用'alert')选中了正确的复选框,但是一旦LOOP继续,就会立即取消选中。为什么单选按钮未选中,复选框不是?我该如何解决?

2 个答案:

答案 0 :(得分:0)

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

如果单选按钮取消选中,可能是因为处理了同一组中的另一个单选按钮。

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

如果要检查所有选项,必须使用复选框或将每个单选按钮的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"/>

也可能是通过jQuery更改checked属性(无论是否真实)将停用其他单选按钮,因此也许尝试使用jQuery的find()来检查相关的单选按钮而不是循环它们

答案 1 :(得分:0)

这取决于您使用的jquery的版本。请查看:How to reset radiobuttons in jQuery so that none is checked获取答案。