2010-08-27 93 views
0

这似乎在击败我,但我不认为我可以在一百万英里之外。基于'select'是否大于或小于给定值的JQuery更改函数

基本上我有一个年龄验证表格,它只是显示年份,除非是当天月份还会影响符合年龄限制的用户(在本例中为1992年的18) - 在这种情况下,日/月份选择也会出现(fadeIn)。

因此,这里是我的代码:

$(document).ready(function(){ 
$('#dateob').hide(); //hide the div containing the month and day selects 
$("#f_yob").change(function() { 
//select change function - if the value is greater than 1992 show the other select boxes 
if ("$('#f_yob').attr('value')>1992") { 
$('#dateob').fadeIn('slow'); 
} 
//otherwise hide the day/month selects 
else { 
$('#dateob').fadeOut('slow'); 
} 
}); 
}); 

如果有人能告诉我,我要去哪里错了,我会很感激!

安迪

回答

3

你只需要改变你的if这样:

if (parseInt($(this).val(), 10) > 1992) { 

<select>(或任何其它输入型),使用.val()来获取值,然后使用parseInt()因为你”重新比较一个数字(.val()返回一个字符串)。


对于“什么是错的?” part..syntax主要是,你只需在if()中有一个字符串,如果不是空的,那么就true而言,就if()检查而言,你需要在那里进行实际比较。

在你的代码的第五行
+0

那不是的话,请参阅我的回答 – rochal 2010-08-27 10:20:12

+0

@rochal - 你是一个比较字符串的数字,这是很少,如果一个好主意......解释这个答案有什么错误*请注意,我已经在答案的下半部分解释了总体情况,顶部只是一个更好的解决方案。 – 2010-08-27 10:21:12

+0

@Nick - 你已经编辑了你的答案 - 最初你没有从他的代码中删除撇号,所以它将表达式评估为单个字符串。现在没问题。你说得对,我可以添加parseint。 – rochal 2010-08-27 10:24:15

1

你做这样的事情:

if ("$('#f_yob').attr('value')>1992") { } 

我相信你的意思是:

if ($('#f_yob').attr('value')>1992) { } 

甚至更​​好:

if (parseInt($('#f_yob').val()) > 1992) { } 

编辑1 您可以使用.val()而不是.attr('value')

编辑2: 新增parseInt函数

+0

对不起Rochal,不知何故,我以某种方式看到了Nicks的回答!我已经尝试了所有的工作都很棒!我知道我非常接近 - 非常感谢帮助 - 谢谢! – tbwcf 2010-08-27 10:32:51