我正在尝试在单击父按钮时显示警告,但它无法正常工作。如果过去任何一天的输入值都会显示警告。
这是HTML:
<div class="well">
<button class="expando" />
<fieldset class="hire_date_wrapper">
<label>Hire Date</label>
<input type="text" name="input_name" /><br />
<span class="date_warning">Warning message</span>
</fieldset>
</div>
这是js:
$('.expando').click(function(){
var well = $(this).parents('.well');
var hiredate = well.children('[name="input_name"]').val();
var today = new Date();
if (hiredate < today) {
well.children('.date_warning').show();
} else {
well.children('.date_warning').hide();
};
});
答案 0 :(得分:2)
您应该将输入的日期转换为日期对象
$('.expando').click(function(){
var well = $(this).parents('.well');
var hiredate = new Date($( '[name="input_name"]', well).val());
var today = new Date();
if ( isNaN( hiredate.getTime() ) ) {
$( '.date_warning', well ).show();
} else {
if (hiredate.getTime() < today.getTime()) {
$( '.date_warning', well ).show();
} else {
$( '.date_warning', well ).hide();
}
}
});
答案 1 :(得分:1)
我认为这是因为您只是比较输入和日期对象的值而不是2个日期对象。
尝试使用new Date(hiredate)
将hiredate变为对象。
小提琴:http://jsfiddle.net/UjVRY/
来自小提琴的代码
var now = new Date(),
hiredate = '2012-10-10',
hiredateobj = new Date(hiredate);
$('#results_noobj').html((hiredate < now ? 'before' : 'after')+' now');
// Output 'after now'
$('#results_obj').html((hiredateobj < now ? 'before' : 'after')+' now');
// OUtputs 'before now'