jQuery .val在输入日期没有更新DOM

时间:2016-06-27 12:50:23

标签: javascript jquery cordova

所以我似乎发现了一个问题,我不确定这是否是jQuery错误或者它是不可能的,但如果有人管理了这个,他们可以告诉我如何。

我有一个日期选择器,我不想让用户选择过去的日期。

var d = new Date($(this).val());
var nowDate = new Date();
var nowDateParse = ""+
    nowDate.getFullYear()+
    (nowDate.getMonth()+1 < 10? "0"+(nowDate.getMonth()+1): (nowDate.getMonth()+1))+
    (nowDate.getDate()+1 < 10? "0"+(nowDate.getDate()+1): (nowDate.getDate()+1));
var selDate = ""+
    d.getFullYear()+
    (d.getMonth()+1 < 10? "0"+(d.getMonth()+1): (d.getMonth()+1))+
    (d.getDate()+1 < 10? "0"+(d.getDate()+1): (d.getDate()+1));
if(parseInt(nowDateParse) > parseInt(selDate)){
    alert("You can only select dates in the future!");
    $("#searchDate").attr("value", ""+
        nowDate.getFullYear()+"-"
        (nowDate.getMonth()+1 < 10? "0"+(nowDate.getMonth()+1): (nowDate.getMonth()+1))+"-"+
        (nowDate.getDate()+1 < 10? "0"+(nowDate.getDate()+1): (nowDate.getDate()+1))
    )
    return false;
}

你可以看到我已经累了$("#searchDate").attr("value"以及$("#searchDate").val(,但两者似乎都会导致同样的问题。

所以日期从当前日期开始:2016年6月27日(英国格式:2016-06-27)

如果用户选择E.G 26/06/2016之前的日期(英国格式:2016-06-26)

它显示警告但未能将日期更改回今天的日期。

我不反对在没有jQuery调用的情况下使用标准Javascript,如果需要的话。

备注:::

作为一个注释,这段代码看起来相当复杂,因为它正在进行日期比较而不是日期时间比较,因为Javascript的Date对象是日期时间而不仅仅是日期

2 个答案:

答案 0 :(得分:1)

在控制日期有效性后添加此内容:

    var dToday = new Date();
    var day = ("0" + dToday.getDate()).slice(-2);
    var month = ("0" + (dToday.getMonth()+1)).slice(-2);
    today = dToday.getFullYear() + "-" + month + "-" + day;
    $("#searchDate").val(today);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input type="date" id="searchDate">

答案 1 :(得分:0)

初始化datepickers时,您必须创建一个新的日期对象并将其设置为minDate

<label for="from">From</label> <input type="text" id="from" name="from"/> <label for="to">to</label> <input type="text" id="to" name="to"/>

var dateToday = new Date();
var dates = $("#from, #to").datepicker({
    defaultDate: "+1w",
    changeMonth: true,
    numberOfMonths: 3,
    minDate: dateToday,
    onSelect: function(selectedDate) {
        var option = this.id == "from" ? "minDate" : "maxDate",
            instance = $(this).data("datepicker"),
            date = $.datepicker.parseDate(instance.settings.dateFormat || $.datepicker._defaults.dateFormat, selectedDate, instance.settings);
        dates.not(this).datepicker("option", option, date);
    }
});

http://jsfiddle.net/dssoft32/qvmqawfd/