date.parse不确定如何实现

时间:2013-06-02 15:39:44

标签: javascript

我正在为JavaScript寻找一些date.parse()帮助。我一直在搜索不同的论坛和网站,但仍然无法找到如何实现这一点的体面示例。我正在上一个开始的网页设计课,我的导师要求我这样做:“将文本框的占位符文本设置为”输入日期。“在文档中添加一个空的段落标记集。在一个单独的JavaScript文件中编码按钮的事件处理程序,以设置段落文本,以声明输入的值是否为可识别的日期格式。如果传递有效的日期字符串和特殊值NaN,Date.parse()方法将返回一个数字(不否则.NaN可以使用内置函数isNaN()进行检查。(您可能需要参考您的在线资源以获取有关Date对象,NaN和isNaN()的更多信息。)“我一直在对于大量显示字符串的网站,我需要一个如何实际使用它的愚蠢的例子。这是按钮的html代码:

<body>
<form>
<input type="text" id="dateTextInput" size="40" placeholder="Please Enter A Date">
<input type="button" id="addButton" value="Enter a Date">
</form>
<p></p>
</body>

以下是我的.js文件:

window.onload = init;

function init() {
var button = document.getElementById("addButton");
button.onclick = handleButtonClick;
}

function handleButtonClick() {
var textInput = document.getElementById("addDateButton");
var dateString = textInput.value;

if (dateString == "") {
alert("Please enter a date");
}
else {

我的问题是在我的其他人之后,如果这是合适的话。我迷失了如何实现date.parse函数。我知道它是date.parse(变量)但不确定如何确保它可以是有效的格式。可以通过多种方式输入日期。我应该制作一系列可能的日期并以这种方式验证吗?或者有更简单的选择吗?如果无法在此处提供答案,那么指向优秀指南的链接也会有所帮助。谢谢你的时间。

更新;这是我现在正在使用的。它中途工作。它提醒空集。我无法让解析提醒:

function handleButtonClick() {
var textInput = document.getElementById("dateTextInput");
var dateString = textInput.value;
var dateValue = Date.parse(dateString);
var valid = !isNaN(dateValue);

if (dateString == "") {
    alert("Please enter a date");

} else {
  return(valid);
}
}

2 个答案:

答案 0 :(得分:0)

我希望一切都可以理解。

<form id="dateForm">
    <!-- pattern just allow such format X.X.XXXX Or XX.XX.XXXX Or X.XX.XXXX Or XX.X.XXXX -->

    <input type="text" id="dateTextInput" size="40" pattern="^\d{1,2}.\d{1,2}.\d{4,4}$" placeholder="Please Enter A Date">
    <input type="submit" id="addButton" value="Enter a Date">
</form>


<script>
// onsubmit ist just called when dateTextInput is empty or has got valid date
document.getElementById('dateForm').onsubmit = function(e){

    e.preventDefault(); // avoid to reload page
    var date = document.getElementById('dateTextInput').value;

    if(date === ''){ // always use === because == is sometimes buggy
      alert('Please enter a date');
    }
    else{
      var convertedDate = date.split('.'); // -> ['03','06','1985']
      convertedDate = new Date(convertedDate[2],convertedDate[1],convertedDate[0]);
      console.log(convertedDate.getTime()); // I think you wanted to get Milliseconds, but this works just as well
    }

    return false;

};
</script>

当日,月和年的顺序不正确时,只需编辑输入字段和此代码行的模式:

convertedDate = new Date(convertedDate[2],convertedDate[1],convertedDate[0]);

答案 1 :(得分:0)

  

可以通过多种方式输入日期。我应该制作一系列可能的日期并以这种方式验证吗?

没有数组。您应该接受Date.parse接受的内容:

  

输入的值是否为可识别的日期格式。如果传递了有效的日期字符串,Date.parse()方法将返回一个数字,否则返回NaN。

可识别的”确实是指我所说的Date.parse capatibilites。那么实施起来是微不足道的:

var dateValue = Date.parse(dateString);
var valid = !isNaN(dateValue);

// grab the paragraph
if (valid)
   // set the paragraph text accordingly
else
   // output something different