好吧,我知道在 html5 上更容易,但我必须使用 html4 或 xhtml,而且我无法以某种方式找到没有 html5 的任何信息。谁能帮助并解释我如何输入日期?
<input type="text" name ="sometext">
普通的 html4 或 xhtml 似乎没有日期类型作为输入类型。
提前致谢。
这个问题已经在其他一些 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 验证函数并将我的替换掉。
在我的函数中,我需要接受多种日期格式,如果格式不正确,我会清空该字段并将用户留在同一个框中。你可以改变它。
默认情况下,HTML4 没有任何标签来输入日期。您需要做的就是包含第三方库,如 JQUERY。
基本input
元素是 HTML(HTML5 除外)所具有的所有元素。对于所有文本输入,您应该有一个带有关联标记的标签。通常,您还应该包括有关预期输入格式的信息,因为这因语言和文化而异,例如
<label for="birth">Date of birth (day/month year):</label>
<input id="birth" type="text" name="birth" size="10">
您还应该使用 JavaScript 预先检查用户输入客户端,以便在出现数据错误时为用户提供快速响应。自然,检查应该在服务器端重复。