2013-10-09 196 views
0

我有单选按钮,只有“是”和“否”作为选项。为什么我的jQuery脚本只运行一次?

<input name="paperAvailable" type="radio" value="Yes" /> Yes 
<input name="paperAvailable" type="radio" value="No"> No 

我想隐藏情侣表行(在类名“paperavailable”与jQuery脚本的时候可以选择“否”的选择,并再次显示行,当用户选择“是”

不知何故,该功能似乎只是在页面加载一次工作。是不是因为我放在的document.ready函数的功能是什么?

$(document).ready(function(){ 

$('.paperavailable').hide(); 


//Paper Available columns 
$("input[name='paperAvailable']").click(function() { 
    if ($("input[name='paperAvailable']").val() == "YES") { 
     $(".paperavailable").show(); 
    } 

    else { 
    $(".paperavailable").hide("slow"); 
     } 

}); 

}); 
+1

您复制粘贴正确?我认为如果“是”应该只是“是” –

+0

感谢@RichardOtvos,这对我来说现在:) – kosherjellyfish

+1

Np,我想你也许想读一读[.prop()](http: //api.jquery.com/prop/)函数,因为它可能更适合这种类型的任务,并且您将通过了解 –

回答

2

两个问题

  1. 字符串比较是区分大小写的 - 你必须设置为Yes值,但相比之下要针对YES测试
  2. $("input[name='paperAvailable']").val()将始终与名称paperAvailable返回第一个输入元素的值,而不是你需要得到的价值选中的元素

你需要测试的检查单选框

$(document).ready(function() { 
    var $paper = $('.paperavailable').hide(); 
    //Paper Available columns 
    var $radios = $("input[name='paperAvailable']").click(function() { 
     if ($radios.filter(':checked').val() == "Yes") { 
      $paper.show(); 
     } else { 
      $paper.hide("slow"); 
     } 
    }); 
}); 

演示:Fiddle

+0

来节省一些头发。值得明确指出字符串比较是区分大小写的,您单选按钮上的“是”值并将其与“YES”进行比较永远不会评估为真。 –

+0

@AnthonyGrist是固定的......稍后注意它 –