Установите только один флажок (и отмените выбор остальных) и покажите поле ввода, если флажок установлен - PullRequest
0 голосов
/ 07 мая 2011
  1. У меня есть форма с «Да» и «Нет» как два флажка. Сначала они не выбраны. Я бы хотел, чтобы пользователь выбрал только один из них с возможностью отменить выбор, если он не хочет принимать решение (именно поэтому я не использовал переключатели). Выбор Да должен отменить выбор Нет и наоборот. Я не уверен, как это сделать. Я использую PHP (codeigniter), Javascript и JQuery.

  2. Во-вторых, после выбора «Да» или «Нет» необходимо отобразить поле ввода. У меня есть эта настройка, но она переключается на действие «onclick», что означает, что выбор «Да» дважды показывает и скрывает поле ввода! Я хочу, чтобы поле ввода показывало, если выбрано «Да» или «Нет», и исчезало, если не выбрано «Да» и «Нет».

    $do_toggle = "onClick=\"javascript:toggle('togglenote');\"";
    
    echo form_radio('decision'.$key,'y',FALSE,$do_toggle)."Yes ";
    
    echo form_radio('decision'.$key,'n',FALSE,$do_toggle)."No";
    
    echo form_input($mytext);
    
    // I put a div tag around the form_input above
    // but it's not showing in the StackOverflow question...
    // but it's there for the toggle to work.
    

Ответы [ 3 ]

0 голосов
/ 07 мая 2011

Это должно делать то, что вы хотите:

$("#checkbox1").change(function() {

if ($(this).attr("checked") && $("#checkbox2").attr("checked")) {
   $("checkbox2").removeAttr("checked");
} else if ($(this).attr("checked")) {
   $("#inputfield").show();
} else {
   $("#inputfield").hide();
}
});


$("#checkbox2").change(function() {

if ($(this).attr("checked") && $("#checkbox1").attr("checked")) {
   $("checkbox1").removeAttr("checked");
} else if ($(this).attr("checked")) {
   $("#inputfield").show();
} else {
   $("#inputfield").hide();
}
});
0 голосов
/ 07 мая 2011
  1. выберите один из них как jQuery или javascript
  2. Не думайте, что это 100% гарантия того, что какой-то хакер не сможет настроить оба и post:)
  3. Анализ $ _REQUESTмассив с установленными обоими значениями да / нет
  4. Примите решение.

PS.JQuery работает не на моем устройстве nokia 6303c :), жестко закодировано - будет работать ... поэтому приложение должно состоять из 2 частей.

0 голосов
/ 07 мая 2011

Предполагая, что ваш HTML похож на это (я думаю, что это так):

<input type="checkbox" name="decisionY" value="y" /> Yes
<input type="checkbox" name="decisionN" value="N" /> Yes
<input type="text" id="togglenote" name="togglenote" />

Ваш JS будет:

$(document).ready(function(){
  $(":checkbox[name^='decision']").change(function(){
     if($(this).is(":checked")){
        $(":checkbox[name[^='decision']").attr("checked", false); //Uncheck the other
        $(this).attr("checked", true);
        $("#togglenote").show();
     }
     if($(":checkbox[name^='decision']:checked").size() == 0){
        $("#togglenote").hide();
     }
  });
});

Надеюсь, это поможет.Приветствия.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...