2012-02-17 5 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. До сих пор я могу заполнять поля ввода, текстовые поля и флажки, но я абсолютно застрял в заполнении radiobuttons. Обратите внимание, что MySQL хранит булевы значения для: флажки (Windows, Linux) и радиокнопки (IDE, GUI, RAD)

Это PHP часть, которая извлекает данные из дБ и преобразует его в формат JSON:

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» - это «среда» и должно быть одинаковым для всех трех радиообъектов. Итак, конечно, эта строка не работает. Я попытался изменить его:

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

и я добавил «идентификатора» в радиокнопки следующим образом:

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

+0

О, Боже мой! ** РЕШЕННЫЙ! ** Два дня, потраченные на это! Спасибо ** bsimic ** Я изменил .attr на .prop, и это сработало. – Nicero

+0

Рад, что я мог помочь. Я добавлю это как «решение», поэтому, если бы вы могли сказать, что это ответ, возможно, это поможет другим, кто когда-нибудь будет искать! – bsimic

ответ

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 или нет) отключит другие переключатели, поэтому, возможно, попробуйте использовать find() jQuery, чтобы проверить соответствующий переключатель, а не перебирать их.

+0

Привет, JackalopeZero, как вы можете видеть в моем коде выше (часть «форма»), три радиообмена сгруппированы правильно (все они имеют одинаковое имя), но каждый имеет разные идентификаторы и VALUE. – Nicero

Смежные вопросы