1

好吧,我知道在 html5 上更容易,但我必须使用 html4 或 xhtml,而且我无法以某种方式找到没有 html5 的任何信息。谁能帮助并解释我如何输入日期?

<input type="text" name ="sometext">

普通的 html4 或 xhtml 似乎没有日期类型作为输入类型。

提前致谢。

4

3 回答 3

2

这个问题已经在其他一些 StackOverflow 线程上被询问和回答,但是当我遇到同样的问题时,这里有更多信息。

使用 jQuery DatePicker 是一个好的开始,但它不会在实际日历弹出窗口之外强制执行格式或最小/最大值完整性。意思是,你可以输入或粘贴一些不好的东西。

这里有 2 个网站链接,这些链接演示了如何在 JS 中使用函数“旧方式”进行操作: http ://www.javascriptkit.com/script/script2/validatedate.shtml http://www.w3resource.com/javascript /form/javascript-date-validation.php

这是另一个非常好的方法的 StackOverflow 链接: Detecting an "invalid date" Date instance in JavaScript

就个人而言,我需要验证和限制最小和最大日期范围(SQL 讨厌 1773 年 1 月 1 日之前的日期,有人在我的应用程序中尝试过)。我将连接一个函数来告诉我日期字符串是否有效,然后将其连接到输入的 onchange 事件。

这是我的 HTML:

我也在使用 ASP.NET 和 jQuery 的 DatePicker,所以对人们来说关键元素是 onblur 事件。

这是 FixValidDate() 函数的 JS:

var availableDateFormats = ["mmddyyyy","mm/dd/yyyy","mm-dd-yyyy","yyyy/mm/dd","yyyy-mm-dd"];
function FixValidDate(txtDate,nulls, minDate, maxDate) {
    //debugger;
    formats = 
    {
        'mmddyyyy':{
            're':/^(\d{1,2})(\d{1,2})(\d{4})$/,
            'month': 1,'day': 2, year: 3
        },
        'mm/dd/yyyy':{
            're':/^(\d{1,2})[/](\d{1,2})[/](\d{4})$/,
            'month': 1,'day': 2, year: 3
        },
        'mm-dd-yyyy':{
            're':/^(\d{1,2})[-](\d{1,2})[-](\d{4})$/,
            'month': 1,'day': 2, year: 3
        },
        'yyyy/mm/dd':{
            're':/^(\d{4})[/](\d{1,2})[/](\d{1,2})$/,
            'month': 2,'day': 3, year: 1
        },
        'yyyy-mm-dd':{
            're':/^(\d{4})[-](\d{1,2})[-](\d{1,2})$/,
            'month': 2,'day': 3, year: 1
        }
    }

    dateText = txtDate.value;
    matched = false;
    for(i=0; i<availableDateFormats.length; i++)
    {
        f = formats[availableDateFormats[i]];
        match = dateText.match(f.re);
        if(match)
        {
            matched = true;
            month = match[f.month];
            day = match[f.day];
            year = match[f.year];
            //TODO validate if the numbers make sense
            txtDate.value = month+"/"+day+"/"+year;
        }
    }
    if (!matched && nulls) {
        txtDate.value = "";
        return false;
    } else {
        var timestamp = Date.parse(txtDate.value);

        if (isNaN(timestamp) == false) {
            var d = new Date(timestamp);

            if (minDate != null) {
                if (d < minDate) {
                    txtDate.value = "";
                    return false;    
                }

            }

            if (maxDate != null) {
                if (d > maxDate) {
                    txtDate.value = "";
                    return false;
                }
            }

        } else {
            txtDate.value = "";
            return false;
        }
    }
    return true;
}

这是来自一个我已经使用 JS 大约十年的旧库。你可以很容易地找到另一个 JS 验证函数并将我的替换掉。

在我的函数中,我需要接受多种日期格式,如果格式不正确,我会清空该字段并将用户留在同一个框中。你可以改变它。

于 2014-03-26T20:25:15.140 回答
1

默认情况下,HTML4 没有任何标签来输入日期。您需要做的就是包含第三方库,如 JQUERY。

查看此示例http://jqueryui.com/datepicker/

于 2012-11-29T05:54:26.093 回答
-1

基本input元素是 HTML(HTML5 除外)所具有的所有元素。对于所有文本输入,您应该有一个带有关联标记的标签。通常,您还应该包括有关预期输入格式的信息,因为这因语言和文化而异,例如

<label for="birth">Date of birth (day/month year):</label>
<input id="birth" type="text" name="birth" size="10">

您还应该使用 JavaScript 预先检查用户输入客户端,以便在出现数据错误时为用户提供快速响应。自然,检查应该在服务器端重复。

于 2012-11-29T08:36:23.317 回答