【问题标题】:function is not defined in onblur? [duplicate]onblur 中没有定义函数? [复制]
【发布时间】:2015-01-03 04:25:02
【问题描述】:

http://jsfiddle.net/58gw8sr7/

我的html

<input type="datetime-local" onblur="formatDate(this.value)" />

我的功能

    function formatDate(date) {
..
..
}

【问题讨论】:

  • 您的小提琴在窗口加载事件中加载它。此外,段落没有 value 属性,请改用 innerHTML。
  • formatDateload 事件处理程序中定义,因此它不是全局的。但是内联事件处理程序只能调用全局函数。所以摆脱内联事件处理程序并使用addEventListener
  • 这是一个完全相同的重复...stackoverflow.com/questions/27751096/… 然后stackoverflow.com/questions/27751236/… 我不确定它是否是同一个人,但这是今天这个确切问题的第三个,都在最后一个2小时左右
  • @AaronSwartz 尝试正确地重新表述你的问题,看看这个:stackoverflow.com/help/how-to-ask,不要在论坛中多次重复你的问题,它会被标记为重复。先做你的研究。

标签: javascript


【解决方案1】:

我仍然支持我在您的问题下方提出的 cmets,但是,我相信这就是您正在寻找的...

jsfiddle

代码考虑了浏览器对datetime-local 输入类型的支持,并相应地设置了输出。

如果浏览器支持datetime-local 输入类型,则输出将是您在此链接的其他帖子中所述的输出:Formatting date value in javascript 格式为:"03/02/1991 12:01 AM" ,它将相应地设置日期和时间。据我所知,您不能将datetime-local 的格式更改为上面指定的格式。如果您想获得上面指定的格式,在支持此输入类型的浏览器上,您始终可以创建一个隐藏的输入元素并将其值设置为所需的输出以进行处理(我假设这是意图)。

var support = false;
var input = document.createElement('input');
input.setAttribute('type', "datetime-local");
if (input.type !== 'text') {
  support = true;
}

$("#datetime").onblur = setDateTime();

function setDateTime() {
  var nDate = new Date();
  var string;
  var date = nDate.getDate();
  var month = nDate.getMonth() + 1;
  var year = nDate.getFullYear();
  var hour = nDate.getHours();
  var minute = nDate.getMinutes();
  var second = nDate.getSeconds();
  var millisecond = nDate.getMilliseconds();
  var ampm = "AM";

  if (date < 10) {
    date = "0" + date.toString();
  }
  if (month < 10) {
    month = "0" + month.toString();
  }
  if (support === false) {
    if (hour === 0) {
      hour = 12;
    }
    if (hour > 12) {
      hour -= 12;
      ampm = "PM";
    }
  }
  if (hour < 10) {
    hour = "0" + hour.toString();
  }
  if (minute < 10) {
    minute = "0" + minute.toString();
  }
  if (support === true) {
    string = year + "-" + month + "-" + date + "T" + hour + ":" + minute + ":" + second;
  } else {
    string = date + "/" + month + "/" + year + " " + hour + ":" + minute + " " + ampm;
  }
  $("#datetime").val(string);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="datetime-local" id="datetime" />

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-11
    • 1970-01-01
    • 2022-08-15
    • 1970-01-01
    • 1970-01-01
    • 2022-11-30
    • 1970-01-01
    相关资源
    最近更新 更多