【问题标题】:Javascript date entered do somethingJavascript 日期输入做某事
【发布时间】:2015-11-09 20:22:21
【问题描述】:

我有一个日期输入字段。如果选择的日期是今天,我正在努力让另一个输入字段禁用。我假设这是因为输入后JS没有处理输入。

这里是:

<input  type="date" name="DateName" id="inputID" onkeydown="dateEntered(this)" />

<input  type="time" name="TimeName" id="inputTime" />

<script>
var date = new Date();
var dd = date.getDate();
var mm = date.getMonth()+1;
var yyyy = date.getFullYear();
var hrs = date.getHours();
var userDateEntry = document.getElementById('inputID').value;

if(dd<10) {
    dd='0'+dd
} 

if(mm<10) {
    mm='0'+mm
} 

date = yyyy+'-'+mm+'-'+dd;

function dateEntered(){
    if (hrs >= 10 && userDateEntry == date) {
        alert("Shipping for today has ended. Your order will arrive tomorrow");
        document.getElementById('inputTime').disabled= true;
    }
    else{
        document.getElementById('inputTime').disabled= false;
    }
}
</script>

【问题讨论】:

  • 您是否尝试过使用逐步调试器?

标签: javascript date input


【解决方案1】:

您应该使用onchange 事件。这应该适合你:

var date = new Date();
var dd = date.getDate();
var mm = date.getMonth()+1;
var yyyy = date.getFullYear();
var hrs = date.getHours();

if(dd<10) {
    dd='0'+dd
} 

if(mm<10) {
    mm='0'+mm
}

date = yyyy+'-'+mm+'-'+dd;

function dateEntered(obj){
    var userDateEntry = obj.value;

    if (hrs >= 10 && userDateEntry == date) {
        alert("Shipping for today has ended. Your order will arrive tomorrow");
        document.getElementById('inputTime').disabled= true;
    }
    else{
        document.getElementById('inputTime').disabled= false;
    }
}
<input  type="date" name="DateName" id="inputID" onchange="dateEntered(this)" />

<input  type="time" name="TimeName" id="inputTime" />

【讨论】:

  • 这里有几点注意事项:您已经将 (this) 传递给 dateEntered 函数,所以我利用了这一点,并在函数中使用 obj 来引用输入(保存查找)。
  • 如果此答案对您有用,请使用绿色复选标记@Jnsn_ 将问题标记为已回答。
  • 完全!这里有很多帮助
【解决方案2】:

把这个移到函数内部:

var userDateEntry = document.getElementById('inputID').value;

否则,它永远不会更新为当前值。

var date = new Date();
var dd = date.getDate();
var mm = date.getMonth()+1;
var yyyy = date.getFullYear();
var hrs = date.getHours();

if(dd<10) {
    dd='0'+dd
} 

if(mm<10) {
    mm='0'+mm
} 

date = yyyy+'-'+mm+'-'+dd;

function dateEntered(){
    var userDateEntry = document.getElementById('inputID').value;
    if (hrs >= 10 && userDateEntry == date) {
        alert("Shipping for today has ended. Your order will arrive tomorrow");
        document.getElementById('inputTime').disabled= true;
    }
    else{
        document.getElementById('inputTime').disabled= false;
    }
}
<input  type="date" name="DateName" id="inputID" onkeydown="dateEntered(this)" />

<input  type="time" name="TimeName" id="inputTime" />

【讨论】:

  • 已由上面的人解决,但这也是一个问题,所以谢谢!
【解决方案3】:

您需要在输入后获取该值,因此您需要在 dateEntered 函数中使用它,而不是 keydown 我会使用 onblur (当字段失去焦点时)。此外,由于您传递了this,因此您可以在函数中使用它。

小提琴:http://jsfiddle.net/pv5e76dv/3/

HTML:

<input  type="date" name="DateName" id="inputID" onblur="dateEntered(this)"/>
<input  type="time" name="TimeName" id="inputTime" />

JS:

function dateEntered(element){
    var date = new Date();
    var dd = date.getDate();
    var mm = date.getMonth() + 1;
    var yyyy = date.getFullYear();
    var hrs = date.getHours();
    var userDateEntry = element.value;

    if(dd<10) {
        dd='0'+dd
    } 

    if(mm<10) {
        mm='0'+mm
    } 

    date = yyyy+'-'+mm+'-'+dd;
    if (hrs >= 10 && userDateEntry == date) {
        alert("Shipping for today has ended. Your order will arrive tomorrow");
        document.getElementById('inputTime').disabled= true;
    }
    else{
        document.getElementById('inputTime').disabled= false;
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-22
    • 2019-08-09
    • 2013-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-27
    相关资源
    最近更新 更多