2013-05-31 1 views
0

У меня есть этот JQuery:Простой показать скрыть DIV с помощью кнопки радио JQuery

$(document).ready(function() { 

    $("input[type=radio]").change(function() 
    { 
     var divId = $(this).attr("id"); 

     if ($(this).is(":checked")) { 
      $("." + divId).show(); 
     } 
     else { 
      $("." + divId).hide(); 
     } 

    }); 
    $("input[type=radio]").change(); 

}); 

дивы должен показать/скрыть в зависимости, если входы проверяются/непроверенной

EDIT: Я должен отметить, что с помощью флажков дивы DO показать и скрыть, но с радио они просто показывают :(.

Он работает с флажками, но не радиокнопок, почему?

http://jsfiddle.net/qarZb/1/

+0

'$ (+ DIVID "") .show();' вы выбираете класс , а не идентификатор. Используйте '#' вместо '.' – crush

+0

. У divs есть классы, которые равны радио/checkbox id – Edward

+0

А, я думаю, если бы вы добавили HTML, я бы это знал. – crush

ответ

2

Это потому, что радио принадлежит к тому же имени name='same', поэтому jQuery обнаруживает, что он выбран.

Когда вы зажигаете change событие на radio, jQuery узнает, что выбрано 1 радио, поэтому он показывает правильный div. Но в следующий раз, когда вы нажимаете другой, все же выбран тот же радиоприемник (принадлежит к той же группе имен). В основном, что я сделал, нужно добавить класс check в свои divs, чтобы скрыть/показать, и когда меняют смену на радио, я их скрываю, а затем показываю только правильный.

Вот обновленный код:

http://jsfiddle.net/qarZb/6/

+0

Это работает, спасибо Kamil! – Edward

+0

Что должно произойти, когда я впервые использую флажок, а затем кнопку опции – Dineshkani

+0

. Я обновил код еще раз, на этот раз тоже проверяя выбранные флажки. – kamil

0

Это потому, что вы не можете снять флажок радиокнопку как флажков.

Чтобы выполнить свою задачу, вы должны сделать несколько изменений в код:

$(document).ready(function() { 

    $("input[type=radio]").change(function() 
    { 
     var divId = $(this).attr("id"); 

     if ($(this).is(":checked")) { 
      $("." + divId).show(); 
      $("." + divId).siblings('[class^=check]').hide(); 

     } 
     else { 
      $("." + divId).hide(); 
     } 

    }); 

}); 

Fiddle

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