onblur中没有定义函数?

时间:2015-01-03 04:25:02

标签: javascript

http://jsfiddle.net/58gw8sr7/

我的HTML

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

我的功能

    function formatDate(date) {
..
..
}

1 个答案:

答案 0 :(得分:1)

我仍然支持我在你的问题下面提出的评论,但是,我相信这是你正在寻找的......

jsfiddle

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

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

&#13;
&#13;
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);
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="datetime-local" id="datetime" />
&#13;
&#13;
&#13;