用户输入值验证

时间:2012-12-21 19:28:24

标签: jquery html validation

我正在尝试在单击父按钮时显示警告,但它无法正常工作。如果过去任何一天的输入值都会显示警告。

这是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();
    };
});

2 个答案:

答案 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();
        }
    }
});​

在此处尝试:http://jsfiddle.net/TM5EK/

答案 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'