2012-02-17 56 views
3

我有以下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

回答

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"/> 

它也可以是,改變經由checked屬性jQuery(無論是否爲true)會禁用其他單選按鈕,因此可能嘗試使用jQuery的find()來檢查相關單選按鈕,而不是循環播放它們。

+0

嗨JackalopeZero,你可以在上面的代碼中看到('表單'部分),三個單選按鈕被正確地分組在一起(它們都具有相同的名稱),但每個都有不同的ID和VALUE。 – Nicero 2012-02-17 12:30:42