2013-09-30 58 views
0

我有这两个单选按钮。我想这样做,所以无论何时用户选择一个,那么jQuery应该显示包含该按钮内容的div。示例#paypal具有称为#mydivpaypaldiv#payza具有称为#mydivpayzadivjQuery - 单选按钮被选中

每当用户点击#paypal时,我只需要显示#mydivpaypal。随着#payza

HTML:

<ul class="payment-methods" id="pmethods" style="margin-left:320px;"> 
    <li class="payment-method paypal"> 
    <input name="payment_methods" type="radio" id="paypal"> 
    <label for="paypal">PayPal</label> 
    </li> 
    <li class="payment-method payza"> 
    <input name="payment_methods" type="radio" id="pagseguro"> 
    <label for="pagseguro">PagSeguro</label> 
    </li> 
</ul> 

的jQuery:

var boxes = $('input:checked'); 
$(boxes).each(function() { 
    if($('#paypal').is(':checked')) { 
    $("#mydivpaypal").show(); 
    } 
    if($('#payza').is(':checked')) { 
    $("#mydivpaypal").hide(); 
     $("#mydivpayza").show(); 
    } 
}); 

我不能得到这个工作。检查单选按钮时没有任何反应。

+0

检查'divs' ** **的ID,他们不会在你的发布存在** ** HTML。另外,使用'.each()'的[.change()](http://api.jquery.com/change/)。 – Vucko

+0

我没有在这个代码中打印它们。它们确实存在。 – oliverbj

+0

您是否在您的单选按钮上粘贴onChange或onClick事件? – lastr2d2

回答

0

实际上,代码无法执行任何操作,因为使用each时,您正在迭代选中的广播并最终设置其第一个可见性状态;没有任何事件监听器到您的单选按钮change事件代码将不会运行时更改选定的收音机选项。

使用事件变化

说明:绑定的事件处理程序,以“变” JavaScript事件, 或者触发元素上的事件。

其次在你的HTML没有payza ID,但pagseguro,并记住或者隐藏/显示,根据目前的检查无线电股利。

代码:

$('input[name=payment_methods]').change(function() { 
    if ($('#paypal').is(':checked')) { 
     $("#mydivpayza").hide(); 
     $("#mydivpaypal").show(); 
    } 
    if ($('#pagseguro').is(':checked')) { 
     $("#mydivpaypal").hide(); 
     $("#mydivpayza").show(); 
    } 
}); 

演示:http://jsfiddle.net/IrvinDominin/NVsPj/

0

注:second radio idpagseguro没有payza

尝试像,

$('input#paypal').on('click',function() { 
    $("#mydivpayza").hide(); 
    $("#mydivpaypal").show();  
}); 
$('input#pagseguro').on('click',function() { 
    $("#mydivpaypal").hide(); 
    $("#mydivpayza").show(); 
}); 

Fiddle

0

你必须把它下的所有变化事件...种类:

$('input[name=payment_methods]').change(function(){ 
    if($('#paypal').is(':checked')) { 
     $("#mydivpaypal").show(); 
    } 
    if($('#payza').is(':checked')) { 
     $("#mydivpaypal").hide(); 
     $("#mydivpayza").show(); 
    } 
}) 

这里是热做到这一点很好,不久一些更好的主意...对小提琴

$('.payment-method input').change(function(){ 
     $('#'+this.id+'_div').show().siblings().hide() 
    }) 

http://jsfiddle.net/acrashik/Nt7nS/

0

根据您目前的代码,你没有任何事件侦听器等待单选按钮被点击。您的代码只在页面加载时运行。你只需要添加一个事件监听器来检查单选按钮他们点击

例如当:http://jsfiddle.net/adambotley/2h8vW/

$(document).ready(function(){ 

    var boxes = $('input:checked'); 
    $(boxes).click(function(){ 
     $(boxes).each(function() { 
      if($('#paypal').is(':checked')) { 
      $("#mydivpaypal").show(); 
      } 
      if($('#payza').is(':checked')) { 
      $("#mydivpaypal").hide(); 
       $("#mydivpayza").show(); 
      } 
     }); 
}); 

通过添加。点击()监听器,它会检查:选中状态时无线电被点击