2013-03-06 82 views
2

这是我的HTML代码隐藏/显示单选按钮的选择的股利

<div class="wrapper"> <strong>Space portion</strong> 

<br /> 
<input type="radio" name="rdSpace" value="RJ" />Space 1 
<br /> 
<input type="radio" name="rdSpace" value="SM" />Space 2 
<br /> 
<br /> 
</div> 
<div class="wrapper"> <strong> Template</strong> 

<br /> 
<input type="radio" name="rdTemplate" value="uploadTemplate" />Upload your own file 
<label class="cabinet"> 
    <input style="margin-left:10px;" type="file" name="user_upload_template" 
    class="uploader" id="file"> 
    <br /> 
    <input type="radio" name="rdTemplate" value="preExisting" />Choose below 
    <div id="RJ" class="tempDisp">Div 1 Preview</div> 
    <div id="SM" class="tempDisp">Div 2 Preview</div> 

这是jQuery代码

$(document).ready(function() { 
$("div.tempDisp").hide(); 
$('[id="' + $(":radio:checked").val() + '"]').show(); 
$('input[name="rdSpace"]:radio,input[name="rdTemplate"]').click(function() { 
    $("div.tempDisp").fadeOut('slow'); 
    $('[id="' + $(this).val() + '"]').fadeIn('slow'); 
}); 
}); 

的jQuery代码的目的是为了显示“1个区预览”在选择“空间1”收音机和显示“Div 2预览”选择“空间2”收音机..直到现在它工作正常

现在我试图添加隐藏“Div 1预览”和“Div 2预览”选举“上传自己的文件”收音机..我成功了,并选择了那些隐藏的按钮..但问题是,他们没有显示回来,当我点击“选择下面”收音机..为什么?

这里是小提琴 http://jsfiddle.net/bTM66/

+0

你还没有告诉他们,以显示 – Popnoodles 2013-03-06 10:25:48

+0

@popnoodles喔是这样的话..我怎么能告诉然后? – aks 2013-03-06 10:26:59

+0

当用户单击该范围内的任何输入时,请检查rdTemplate的值。如果它是preExisting,则显示正确的div,否则显示none。你不需要使用'$('[id =''+ $(this).val()+'']')。fadeIn('slow');'因为该过程应用于所有单选按钮,所以需要使用'$('[id =''+ $('input [name =“rdSpace”]:checked').val()+'“]')。fadeIn('slow');' – Popnoodles 2013-03-06 10:30:32

回答

3

试试这个:

$(document).ready(function() { 
    $("div.tempDisp").hide(); 
    $('[id="' + $(":radio:checked").val() + '"]').show(); 
    $('input[name="rdSpace"]:radio,input[name="rdTemplate"]').change(function() { 
     $("div.tempDisp").fadeOut('slow'); 
     if ($(this).val() === "preExisting") { 
      $(":radio:checked:first").change(); 
     } else { 
      if(!$('input[value="uploadTemplate"]').is(':checked')){ 
      $('[id="' + $(this).val() + '"]').fadeIn('slow'); 
      } 
     } 
    }); 
}); 

Sample Fiddle

+1

做..按要求工作..感谢名单花花公子:) – aks 2013-03-06 10:43:25

+0

但有是一个问题...当选择“上传自己的文件”并且“Space 1”或“Space 2”被切换时,它显示“Div 1 Preview”或“Div 2 Preview”发生..如何防止这? – aks 2013-03-06 10:49:48

+0

我看到的唯一问题是,与您(@aks)编写代码的方式不同,这取决于无线电按特定顺序。 '$( “:单选:检查:一是”)变化();'。只是让你知道。 – Popnoodles 2013-03-06 10:57:45

2

因此,要获得一个或没有两个div表现取决于两个独立的价值观。

click事件势必两组单选按钮,这样你就不能使用$(this)得到检查一个值来选择一个ID显示,你需要指定它的是哪个单选按钮选择其名称。

你还需要检查哪些其他选择(浏览器/送)的检查和显示或不显示。

而且使用上的变化,而不是点击,这样你就不会得到不必要的淡出/淡入。

我想补充style="display:none"到.tempDisp所以他们已经隐藏在负荷而不JS的div。

Working jsfiddle

$(document).ready(function() { 

    $('input[name="rdSpace"]:radio,input[name="rdTemplate"]').on('change', function() { 
     $("div.tempDisp").fadeOut('slow'); 
     if ($('input[name="rdTemplate"]:checked').val()=='preExisting'){ 
      $('[id="' + $('input[name="rdSpace"]:checked').val() + '"]').fadeIn('slow'); 
     } 
    }) 
}); 

设置这样一来检查,从而可以在用户改变第一选择进行显示的决定。

<input type="radio" name="rdTemplate" value="preExisting" checked="checked" /> 
+0

现在的问题是...当页面加载时,divs是不可见的,只有当我点击“选择下面”时,才会激活它们。如果点击“Space 1”或“Space 2“什么都没有发生...... – aks 2013-03-06 10:40:19

+0

是的,你需要这两个选项来作出决定。如果您在HTML中将默认的一个设置为checked =“checked”,它将显示您想要的内容。 http://jsfiddle.net/bTM66/7/ – Popnoodles 2013-03-06 10:42:59

+0

是的..这是完美的..谢谢.. – aks 2013-03-06 10:51:30

2

你的代码做什么..

$('input[name="rdSpace"]:radio,input[name="rdTemplate"]').click(function() { ==点击时,就用电台给定的选择与类

$("div.tempDisp").fadeOut('slow'); ==格tempDisp淡出慢

$('[id="' + $(this).val() + '"]').fadeIn('slow'); == ID为(选择的无线电VAL)在div显示

问题

上点击Upload your own file当前值uploadTemplate和jQuery将无法找到DIV与id = uploadTemplate。所以没有任何反应

的onclick Choose below同样的事情..当前值preExisting,并再次它将不会与id=preExisting找到股利。所以没有什么再

发生的工作都是围绕

$(document).ready(function() { 
    $("div.tempDisp").hide(); 
    $('[id="' + $(":radio:checked").val() + '"]').show(); 
    $('input[name="rdSpace"]:radio,input[name="rdTemplate"]').click(function() { 
     $("div.tempDisp").fadeOut('slow'); 
     $('[id="' + $(this).val() + '"]').fadeIn('slow'); 
     if($(this).val()=="preExisting"){ //here check if value is preExistig 
     $('#'+ $('input[name="rdSpace"]:checked').val()).fadeIn('slow'); 
     //$('#RJ,#SM').fadeIn('slow'); //if yes show the div you wanted which is RJ,SM 
     } 
    }); 
}); 

更新

更换

$('#RJ,#SM').fadeIn('slow'); 

$('#'+ $('input[name="rdSpace"]:checked').val()).fadeIn('slow'); 

updated working fiddle

+0

它是对的“选择下面的”选择同时显示的div应考虑到虽然上述选择也..空间1或2的空间更新 – aks 2013-03-06 10:44:54

+0

检查出来 – bipen 2013-03-06 10:53:17

相关问题