Javascript 即使条件为假,如果条件仍显示警报
我对Javascript 即使条件为假,如果条件仍显示警报,javascript,jquery,datepicker,alert,Javascript,Jquery,Datepicker,Alert,我对if条件有问题。我编写了一个脚本,当字段#customer age的值小于21(计算出的人的年龄)时,该脚本应显示警报。问题是,当值小于或大于21时,每次都会显示警报 我的html代码是: <div class="type-text"> <label for="birthday">Date1:</label> <input type="text" size="20" id="birthday" name="birthday" value="" rea
if
条件有问题。我编写了一个脚本,当字段#customer age
的值小于21(计算出的人的年龄)时,该脚本应显示警报。问题是,当值小于或大于21时,每次都会显示警报
我的html代码是:
<div class="type-text">
<label for="birthday">Date1:</label>
<input type="text" size="20" id="birthday" name="birthday" value="" readonly="readonly" />
</div>
<div class="type-text">
<span id="customer-age" readonly="readonly"></span>
</div>
<span id="date_from_start">23/11/2012</span>
日期1:
23/11/2012
脚本如下所示:
function getAge() {
var sday = $('#date_from_start').html();
var split_date1 = sday.split("/");
var todayDate = new Date(split_date1[2],split_date1[1] - 1,split_date1[0]);
var bday = $('#birthday').val();
var split_date2 = bday.split("/");
var birthDate = new Date(split_date2[2],split_date2[1] - 1,split_date2[0]);
var age = todayDate.getFullYear() - birthDate.getFullYear();
var m = todayDate.getMonth() - birthDate.getMonth();
if (m < 0 || (m === 0 && todayDate.getDate() < birthDate.getDate())) {
age--;
}
return age;
}
var startDate = new Date("1935,01,01");
$('#birthday').datepicker({
dateFormat: 'dd/mm/yy',
dayNamesMin: ['Nie', 'Pon', 'Wt', 'Śr', 'Czw', 'Pt', 'Sob'],
dayNames: ['Niedziela','Poniedzialek','Wtorek','Środa','Czwartek','Piątek','Sobota'],
monthNamesShort: ['Sty', 'Lut', 'Mar', 'Kwi', 'Maj', 'Cze', 'Lip', 'Sie', 'Wrz', 'Paź', 'Lis', 'Gru'],
changeMonth: true,
changeYear: true,
numberOfMonths: 1,
constrainInput: true, firstDay: 1, dateFormat: 'dd/mm/yy',
yearRange: '-77:-18',
defaultDate: startDate,
onSelect: function(dateText, inst) {
$('#customer-age').html(getAge(new Date(dateText)));
var cage = $('#customer-age').val();
if (cage < 21)
{
alert('< 21 year');
}
else {
}
},
maxDate: +0
});
函数getAge(){
var sday=$('date_from_start').html();
var split_date1=sday.split(“/”);
var todayDate=新日期(拆分日期1[2],拆分日期1[1]-1,拆分日期1[0]);
var bday=$(“#生日”).val();
var split_date2=bday.split(“/”);
var birthDate=新日期(拆分日期2[2],拆分日期2[1]-1,拆分日期2[0]);
var age=todayDate.getFullYear()-birthDate.getFullYear();
var m=todayDate.getMonth()-birthDate.getMonth();
如果(m<0 | |(m==0&&todayDate.getDate()
您可以检查的工作代码将您的行更改为:
var cage = $('#customer-age').val();
到
增加:
你是说:
var infoContent = $.trim( $("#info").html() );
alert( infoContent );
将您的线路从:
var cage = $('#customer-age').val();
到
增加:
你是说:
var infoContent = $.trim( $("#info").html() );
alert( infoContent );
.val()
在span标记上无效,不返回任何内容
改用.html()
.text()
也可以
您不需要将它显式地解析为Int,这是自动完成的
var cage = $('#customer-age').html();
.val()
在span标记上无效,不返回任何内容
改用.html()
.text()
也可以
您不需要将它显式地解析为Int,这是自动完成的
var cage = $('#customer-age').html();
使用:
而不是:
var cage = $('#customer-age').val();
以下是。使用:
而不是:
var cage = $('#customer-age').val();
这是。这个条件没有问题,我想问题出在你的日期选择器上
将您的代码更改为此,了解我的意思:
if (cage < 21)
{
alert(cage);
}
else
{
}
if(框架<21)
{
警报(笼子);
}
其他的
{
}
变量cage的值为空。那应该是NaN。这种情况没有问题,我想问题出在你的日期选择器上
将您的代码更改为此,了解我的意思:
if (cage < 21)
{
alert(cage);
}
else
{
}
if(框架<21)
{
警报(笼子);
}
其他的
{
}
变量cage的值为空。那就是NaN。两件事:
在比较字符串时,应使用parseInt()
将其转换为整数,然后进行比较
框架
为空
两件事:
在比较字符串时,应使用parseInt()
将其转换为整数,然后进行比较
框架
为空
parseInt不是必需的,类型是自动强制的。也许您知道如何将文本从#info
字段插入到警报
字段?@Adrian您应该接受此答案以表明您的问题已经解决。parseInt不是必需的,该类型是自动强制的。也许你知道如何将文本从#info
字段插入警报
字段?@Adrian你应该接受这个答案,以表明你的问题已经解决。人们已经指出了答案,但我想很快说你不需要传递新日期(dateText)
到你的getAge
函数,因为你的函数是通过JS直接从页面中提取出来的。人们已经指出了答案,但我想很快说你不需要传递新日期(dateText)
到您的getAge
函数,因为您的函数是通过JS直接从页面中提取的。空字符串和NaN
是不同的事情,'<21
始终为真,而将NaN
与一个数字进行比较时,除了之外,总是会得到false=代码>比较!空字符串和NaN
是两码事,'<21
始终为真,而将NaN
与一个数字进行比较时,除了之外,总是会得到false=代码>比较!