jquery的if行为的奇怪行为

时间:2011-10-23 18:54:52

标签: jquery jquery-ui jquery-ui-datepicker

我有一个jquery datepicker插件,这里是代码: http://dpaste.com/639849/

真正的问题在于hightlight函数,其中if条件永远不会被执行。有问题的if条件是:

if ($('#id_checkin').datepicker('getDate') == date) {
  return [false, ''];
 }  

虽然我尝试使用console.log输出日期变量和$('#id_checkin')。datepicker('getDate')的值。在某一点上,两个值完全相同。以下是两个值的输出:

2011年10月28日星期五00:00:00 GMT + 0530
2011年10月28日星期五00:00:00 GMT + 0530

我的问题是,如果它们的价值匹配,为什么if语句不相信呢? :( 请指导。感谢

1 个答案:

答案 0 :(得分:1)

它们是相同的类型还是简单地串联到相同的表示形式?尝试将其更改为if ($('#id_checkin').datepicker('getDate').toString() == date.toString()),看看会发生什么。

编辑:至于为什么......可能是因为其中一个值是一些奇怪的日期对象。 JavaScript将尝试强制类型,但它可能只适用于它所知道的类型。我的第二个猜测是这些日期中的一个(或两个)具有非零毫秒的部分。由于被调用toString()生成的输出中不包含毫秒,因此它们可能匹配其字符串表示但不匹配实际值。尝试输出value属性(假设两边都是有效的Date对象),看看那里有什么。