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=比较!