jQuery测试2个月

时间:2013-11-06 13:18:27

标签: jquery

我正在寻找一种方法来检查第一个选择菜单的日期是否在第二个之前。 任何帮助将不胜感激。感谢。

<select id="outbound_month_and_year">
<option selected="" value="-1">Departing</option>
<option selected="" value="NOV2013">November 2013</option>
<option value="DEC2013">December 2013</option>
<option value="JAN2014">January 2014</option>
<option value="FEB2014">February 2014</option>
<option value="MAR2014">March 2014</option>
<option value="APR2014">April 2014</option>
<option value="MAY2014">May 2014</option>
<option value="JUN2014">June 2014</option>
<option value="JUL2014">July 2014</option>
<option value="AUG2014">August 2014</option>
<option value="SEP2014">September 2014</option>
<option value="OCT2014">October 2014</option>
</select>

<select id="return_month_and_year">
<option selected="" value="-1">just one way</option>
<option value="NOV2013">November 2013</option>
<option value="DEC2013">December 2013</option>
<option value="JAN2014">January 2014</option>
<option value="FEB2014">February 2014</option>
<option value="MAR2014">March 2014</option>
<option value="APR2014">April 2014</option>
<option value="MAY2014">May 2014</option>
<option value="JUN2014">June 2014</option>
<option value="JUL2014">July 2014</option>
<option value="AUG2014">August 2014</option>
<option value="SEP2014">September 2014</option>
<option value="OCT2014">October 2014</option>
</select>

3 个答案:

答案 0 :(得分:0)

您可以尝试这样

$('select').on ('change', function () {
var date1 = new  Date($('#outbound_month_and_year').val());
    var date2 = new  Date($('#return_month_and_year').val());
    if (date1.getTime() < date2.getTime() ) {
    alert("date1 is less than date2");
    }
});

JSFiddle这适用于Chrome,但我认为它可能具有跨浏览器兼容性。

答案 1 :(得分:0)

试试这个

$('select').on ('change', function () {
if($('#outbound_month_and_year').val()!=-1 && $('#return_month_and_year').val()!=-1){
    var date1 = new  Date($('#outbound_month_and_year').val());
    var date2 = new  Date($('#return_month_and_year').val());
    if (date1.getTime() < date2.getTime() ) {
     // show message
    }
}
});

答案 2 :(得分:0)

因为您说您无法更改HTML,所以您需要使用字符串操作将日期转换为可以解析的格式。这是丑陋的代码,但它有效:

var $out = $('#outbound_month_and_year'),
    $in = $('#return_month_and_year');

$out.add($in).on('change', function() {
    var outDate = getDate($out.val()),
        inDate = getDate($in.val());

    if (outDate && inDate) {
        if (outDate < inDate) {
            $('#result').text('Outbound is before');
        }
        else if (outDate > inDate) {
            $('#result').text('Outbound is after');
        }
        else {
            $('#result').text('Outbound is the same');
        }
    }
});

function getDate(val) {
    if (val == -1)
        return false;

    var day = '01';
    var month = val.substr(0, 3);
    var year = val.substr(-4);
    return new Date(day + ' ' + month + ' ' + year);
}

Example fiddle

请注意,此解决方案非常脆弱,因为它可以通过更改select值的格式轻松破解。如果发生这种情况,您需要相应地修改getDate()函数。