Warning:
This wiki has been archived and is now read-only.
HTML5/states-of-the-type-attribute
type
属性的状态
隐藏状态
若input元素的type属性为隐藏状态,则应用本节中的规则。
约束验证:如果一个input元素的type属性为隐藏状态,则禁止约束验证。
如果存在name属性且其值为一个区分大小写地匹配字符串“_charset_
”,则元素的value属性必须被忽略。
- 向当前元素应用value IDL属性,且该属性在default模式。
- 下列内容属性禁止标记且不能应用于当前元素:accept、alt、autocomplete、checked、dirname、formaction、formenctype、formmethod、formnovalidate、formtarget、height、list、max、maxlength、min、multiple、pattern、placeholder、readonly、required、size、src、step和width。
- 下列IDL属性和方法不能应用于当前元素:checked、files、list、selectedOption、selectionStart、selectionEnd、selectionDirection、valueAsDate和valueAsNumber IDL属性;select()、setSelectionRange()、stepDown()和stepUp()方法。
- 不能应用input和change事件。
文本状态和搜索状态
若input元素的type属性为文本状态或搜索状态,则应用本节中的规则。
如果当前元素是可变的,其值应该被用户编辑。用户代理禁止用户在元素的值中插入U+000A换行(LF)或U+000D回车(CR)字符。
如果当前元素是可变的,用户代理应该允许用户更改该元素的书写方向,可以将其设为从左向右书写或从右向左书写。如果用户这样做,则用户代理必须执行下列步骤:
如果标记了value属性,则其值禁止包含U+000A换行(LF)和U+000D回车(CR)字符。
- 下列通用input元素内容属性、IDL属性、方法将应用于当前元素:autocomplete、dirname、list、maxlength、pattern、placeholder、readonly、required和size内容属性;list、selectedOption、selectionStart、selectionEnd、selectionDirection和value IDL属性;select()和setSelectionRange()方法。
- 向当前元素应用value IDL属性,且该属性在value模式。
- 应用input和change事件。
- 下列内容属性禁止标记且不能应用于当前元素:accept、alt、checked、formaction、formenctype、formmethod、formnovalidate、formtarget、height、max、min、multiple、src、step和width。
- 下列IDL属性和方法不能应用于当前元素:checked、files、valueAsDate和valueAsNumber IDL属性;stepDown()和stepUp()方法。
电话号码状态
若input元素的type属性为电话号码状态,则应用本节中的规则。
input元素表示一行当前元素的值所给出的的电话号码编辑控件。
如果当前元素是可变的,其值应该被用户编辑。用户代理可能会修改用户输入的值的间距和标点。用户代理禁止用户在元素的值中插入U+000A换行(LF)或U+000D回车(CR)字符。
如果标记了value属性,则其值禁止包含U+000A换行(LF)和U+000D回车(CR)字符。
- 下列通用input元素内容属性、IDL属性、方法将应用于当前元素:autocomplete、list、maxlength、pattern、placeholder、readonly、required和size内容属性;list、selectedOption、selectionStart、selectionEnd、selectionDirection和value IDL属性;select()和setSelectionRange()方法。
- 向当前元素应用value IDL属性,且该属性在value模式。
- 应用input和change事件。
- 下列内容属性禁止标记且不能应用于当前元素:accept、alt、checked、dirname、formaction、formenctype、formmethod、formnovalidate、formtarget、height、max、min、multiple、src、step和width。
- 下列IDL属性和方法不能应用于当前元素:checked、files、valueAsDate和valueAsNumber IDL属性;stepDown()和stepUp()方法。
URL状态
若input元素的type属性为URL状态,则应用本节中的规则。
input元素表示一行当前元素的值所给出的的绝对URL编辑控件。
如果当前元素是可变的,其用户代理应该允许用户修改其值所表示的URL。用户代理可以允许用户将其值设置为一个并非有效地绝对URL的字符串,但还可以自动地转义用户输入的字符使其值总是有效地绝对URL(即使其不是用户在界面上看到和编辑的实际值)。用户代理应该允许用户将其值设为空字符串。用户代理禁止用户在元素的值中插入U+000A换行(LF)或U+000D回车(CR)字符。
如果标记了value属性,且其值不为空,则其值必须是一个可以由空格包围的有效URL且是一个绝对URL。
值处理算法如下:从值中除去换行符,之后从值中除去首尾的空白字符。
约束验证:若当前元素的值既不是空字符串也不是一个有效地绝对URL,则该元素是出现类型不匹配。
- 下列通用input元素内容属性、IDL属性、方法将应用于当前元素:autocomplete、list、maxlength、pattern、placeholder、readonly、required和size内容属性;list、selectedOption、selectionStart、selectionEnd、selectionDirection和value IDL属性;select()和setSelectionRange()方法。
- 向当前元素应用value IDL属性,且该属性在value模式。
- 应用input和change事件。
- 下列内容属性禁止标记且不能应用于当前元素:accept、alt、checked、dirname、formaction、formenctype、formmethod、formnovalidate、formtarget、height、max、min、multiple、src、step和width。
- 下列IDL属性和方法不能应用于当前元素:checked、files、valueAsDate和valueAsNumber IDL属性;stepDown()和stepUp()方法。
如果一个稳定包含下列标记:
<input type="url" name="location" list="urls"> <datalist id="urls"> <option label="MIME: Format of Internet Message Bodies" value="http://tools.ietf.org/html/rfc2045"> <option label="HTML 4.01 Specification" value="http://www.w3.org/TR/html4/"> <option label="Form Controls" value="http://www.w3.org/TR/xforms/slice8.html#ui-commonelems-hint"> <option label="Scalable Vector Graphics (SVG) 1.1 Specification" value="http://www.w3.org/TR/SVG/"> <option label="Feature Sets - SVG 1.1 - 20030114" value="http://www.w3.org/TR/SVG/feature.html"> <option label="The Single UNIX Specification, Version 3" value="http://www.unix-systems.org/version3/"> </datalist>
……且用户输入“www.w3”,而且用户代理发现用户近期曾经访问过http://www.w3.org/Consortium/#membership和http://www.w3.org/TR/XForms/,则可能按照下列方式进行渲染:
在这个例子中,前四个URL由在编码人员指定的列表中匹配用户输入的文本所发现的四个URL组成,其按照用户代理定义的机制进行排序(可能是按照用户选择这些URL的频率)。注意用户代理时如何使用URL技术允许用户省略协议部分并且对域名进行智能匹配。
最后两个URL(可能还有更多,给出滚动条以便选择更多的值)是在用户代理的会话历史数据中进行匹配的结果。这些数据不允许页面DOM使用。在这个特例中,用户代理没有为这些值提供标题。
电子邮件状态
若input元素的type属性为电子邮件状态,则应用本节中的规则。
- 若当前元素没有标记multiple属性
- input元素表示一行当前元素的值所给出的的电子邮件地址编辑控件。
- 如果当前元素是可变的,则用户代理应该允许用户修改其值所表示的电子邮件地址。用户代理可以允许用户将其值设置为一个并非有效地电子邮件地址的字符串。用户代理应该以预期用户将提供一个单一的电子邮件地址来采取一些措施。用户代理应该允许用户将其值设为空字符串。用户代理禁止用户在元素的值中插入U+000A换行(LF)或U+000D回车(CR)字符。用户代理可以为了显示和编辑对其值进行转换;特别是用户代理应该在进行显示时将其值中的punycode转换为IDN,反之亦然。
- 如果标记了value属性,且其值不为空,则其值必须是一个表示单一的有效地电子邮件地址的值。
- 值处理算法如下:从值中除去换行符。
- 若移除了multiple属性,则用户代理必须执行值处理算法。
- 约束验证:若当前元素的值既不是空字符串也不是一个有效地电子邮件地址,则该元素出现类型不匹配。
- 若当前元素标记了multiple属性
- 元素的值的集合是元素的值按逗号分隔的结果。
- input元素表示一个添加、删除、编辑当前元素的值所给出的的电子邮件地址的控件。
- 如果当前元素是可变的,则用户代理应该允许用户添加、删除和修改其值的集合所表示的电子邮件地址。用户代理可以允许用户将其值的集合的列表中的任意一个值设置为一个并非有效地电子邮件地址的字符串,但禁止用户将任意一个值设为包含U+002C逗号(,)、U+000A换行符(LF)或U+000D回车(CR)字符的字符串。用户代理应该允许用户删除元素的值的集合中的所有地址。用户代理可以为了显示和编辑对其值的集合进行转换;特别是用户代理应该在进行显示时将其值中的punycode转换为IDN,反之亦然。
- 如果用户修改了元素的值的集合,用户代理必须执行下列步骤:
- 如果标记了value属性,则其值必须是一个有效的电子邮件地址的列表。
- 值处理算法如下:
- 若设置了multiple属性,则用户代理必须执行值处理算法。
- 约束验证:若当前元素的值不是一个有效的电子邮件地址的列表,则该元素出现类型不匹配。
有效地电子邮件地址是一个匹配ABNF “1*( atext / "." ) "@" ldh-str *( "." ldh-str )”的字符串,其中“atext”定义自RFC 5322的3.2.3节、“ldh-str”定义自RFC 1034的3.5节。[ABNF] [RFC5322] [RFC1034]
有效地电子邮件地址列表是一组由逗号分隔的标记,其每个标记本身是一个有效地电子邮件地址。为了获取有效地电子邮件地址列表中标记的列表,实现必须按照逗号分隔字符串。
- 下列通用input元素内容属性、IDL属性、方法将应用于当前元素:autocomplete、list、maxlength、multiple、pattern、placeholder、readonly、required和size内容属性;list和value IDL属性。
- 下列通用input元素内容属性、IDL属性、方法将应用于当前元素没有标记multiple属性的情况下:selectedOption IDL属性。
- 向当前元素应用value IDL属性,且该属性在value模式。
- 应用input和change事件。
- 下列内容属性禁止标记且不能应用于当前元素:accept、alt、checked、dirname、formaction、formenctype、formmethod、formnovalidate、formtarget、height、max、min、src、step和width。
- 下列IDL属性和方法不能应用于当前元素:checked、files、selectionStart、selectionEnd、selectionDirection、valueAsDate和valueAsNumber IDL属性;select()、setSelectionRange()、stepDown()和stepUp()方法。
密码状态
若input元素的type属性为密码状态,则应用本节中的规则。
input元素表示一行当前元素的值所给出的的纯文本编辑控件。用户代理应该隐藏其值,使除用户之外的人不能看到它。
如果当前元素是可变的,其值应该可以被用户修改。用户代理禁止用户在元素的值中插入U+000A换行(LF)或U+000D回车(CR)字符。
如果标记了value属性,则其值必须不包含U+000A换行(LF)和U+000D回车(CR)字符。
- 下列通用input元素内容属性、IDL属性、方法将应用于当前元素:autocomplete、maxlength、pattern、placeholder、readonly、required和size内容属性;selectionStart、selectionEnd、selectionDirection和value IDL属性;select()和setSelectionRange()方法。
- 向当前元素应用value IDL属性,且该属性在value模式。
- 应用input和change事件。
- 下列内容属性禁止标记且不能应用于当前元素:accept、alt、checked、dirname、formaction、formenctype、formmethod、formnovalidate、formtarget、height、list、max、min、multiple、src、step和width。
- 下列IDL属性和方法不能应用于当前元素:checked、files、list、selectedOption、valueAsDate和valueAsNumber IDL属性;stepDown()和stepUp()方法。
日期和时间状态
若input元素的type属性为日期和时间状态,则应用本节中的规则。
input元素表示一行将当前元素的值设置为一个表示特定全球日期和时间的字符串。用户代理可能会以任何对用户来说适当的时区来显示日期和时间。
如果当前元素是可变的,用户代理应该允许用户修改其值所表示的全球日期和时间,全球日期和时间通过对其值解析一个全球日期和时间获得。用户代理禁止用户将其值设为非空且非UTC下表示有效地全球日期和时间字符串的字符串,但用户代理可能会允许用户在其它时区下进行设置和查看并在后台对其值中的时间进行与UTC时区之间的相互转换。如果用户代理提供了一个用于选择全球日期和时间的用户界面,则其值必须被设为一个表示用户所选择的用UTC表示的有效地全球日期和时间字符串。用户代理应该允许用户将其值设为空字符串。
如果标记了value属性,且其值不为空,则其值必须是一个有效地全球日期和时间字符串。
值处理算法如下:如果其值是一个有效地全球日期和时间字符串,则将该时间调整为UTC时区下表示相同时刻的值,否则设其为空字符串。
如果标记了min属性,则其值必须是一个有效地全球日期和时间字符串。如果标记了max属性,则其值必须是一个有效地全球日期和时间字符串。
step属性用秒来表示。步长因子是1000(将秒转换成毫秒,用于其他算法)。默认步长为60秒。
若元素出现步长不匹配,则用户代理可能会将当前元素的值四舍五入到最近的不会是该元素出现步长不匹配的全球日期和时间。
将字符串转换为数值的算法如下:如果从input解析一个全球日期和时间出现错误,则返回一个错误;否则,返回从UTC时区下1970-01-01凌晨零点(该时间通过值“1970-01-01T00:00:00.0Z”表示)到解析后的全球日期和时间的毫秒数,忽略闰秒。
将数值换为字符串转的算法如下:返回一个UTC表示的有效地全球日期和时间字符串,该字符串表示UTC时区下1970-01-01凌晨零点(该时间通过值“1970-01-01T00:00:00.0Z”表示)之后input毫秒的全球日期和时间。
将字符串转换为Date对象的算法如下:如果从input解析一个全球日期和时间出现错误,则返回一个错误;否则,返回一个表示解析后的全球日期和时间的Date对象,使用UTC表示。
将Date对象转换为字符串的算法如下:返回一个UTC表示的有效地全球日期和时间字符串,该字符串表示input表示的全球日期和时间。
- 下列通用input元素内容属性、IDL属性、方法将应用于当前元素:autocomplete、list、max、min、readonly、required和、step内容属性;list、value、valueAsDate、valueAsNumber和selectedOption IDL属性;stepDown()和stepUp()方法。
- 向当前元素应用value IDL属性,且该属性在value模式。
- 应用input和change事件。
- 下列内容属性禁止标记且不能应用于当前元素:accept、alt、checked、dirname、formaction、formenctype、formmethod、formnovalidate、formtarget、height、maxlength、multiple、pattern、placeholder、size、src和width。
- 下列IDL属性和方法不能应用于当前元素:checked、files、selectionStart、selectionEnd、selectionDirection IDL属性;select()和setSelectionRange()方法。
下列片段展示了一个日历应用的一部分。用户可以指定一个会议的日期和时间(使用其所在时区,但用户代理可以允许用户修改所在时区),由于提交的数据包含时区偏移量,则无论与会者在哪个时区,应用程序都可以确定该会议召开的准确时间。
<fieldset> <legend>新增会议</legend> <p><label>会议名称:<input type=text name="meeting.label"></label> <p><label>会议时间:<input type=datetime name="meeting.start"></label> </fieldset>
如果应用使用了本地日期和时间类型,则日历应用还需要显式地确认用户所使用的时期。
日期状态
若input元素的type属性为日期状态,则应用本节中的规则。
input元素表示一行将当前元素的值设置为一个表示特定日期的字符串。
如果当前元素是可变的,用户代理应该允许用户修改其值所表示的日期,日期通过对其值解析一个日期获得。用户代理禁止用户将其值设为非空且非有效地日期字符串的字符串。如果用户代理提供了一个用于选择日期的用户界面,则其值必须被设为一个表示用户所选择的有效地日期字符串。用户代理应该允许用户将其值设为空字符串。
如果标记了value属性,且其值不为空,则其值必须是一个有效地日期字符串。
值处理算法如下:如果其值不是一个有效地日期字符串,则设其为空字符串。
如果标记了min属性,则其值必须是一个有效地日期字符串。如果标记了max属性,则其值必须是一个有效地日期字符串。
step属性用天来表示。步长因子是86,400,000(将天转换成毫秒,用于其他算法)。默认步长为1天。
若元素出现步长不匹配,则用户代理可能会将当前元素的值四舍五入到最近的不会使该元素出现步长不匹配的日期。
将字符串转换为数值的算法如下:如果从input解析一个日期出现错误,则返回一个错误;否则,返回从UTC时区下1970-01-01凌晨零点(该时间通过值“1970-01-01T00:00:00.0Z”表示)到解析后的日期在UTC时区下凌晨零点的毫秒数,忽略闰秒。
将数值换为字符串转的算法如下:返回一个UTC表示的有效地日期字符串,该字符串表示UTC时区下1970-01-01凌晨零点(该时间通过值“1970-01-01T00:00:00.0Z”表示)之后input毫秒的日期。
将字符串转换为Date对象的算法如下:如果从input解析一个日期出现错误,则返回一个错误;否则,返回一个表示解析后的日期在UTC凌晨零点的Date对象。
将Date对象转换为字符串的算法如下:返回一个在UTC时区下input表示的日期在当前时间的有效地日期字符串。
- 下列通用input元素内容属性、IDL属性、方法将应用于当前元素:autocomplete、list、max、min、readonly、required和、step内容属性;list、value、valueAsDate、valueAsNumber和selectedOption IDL属性;stepDown()和stepUp()方法。
- 向当前元素应用value IDL属性,且该属性在value模式。
- 应用input和change事件。
- 下列内容属性禁止标记且不能应用于当前元素:accept、alt、checked、dirname、formaction、formenctype、formmethod、formnovalidate、formtarget、height、maxlength、multiple、pattern、placeholder、size、src和width。
- 下列IDL属性和方法不能应用于当前元素:checked、selectionStart、selectionEnd、selectionDirection IDL属性;select()和setSelectionRange()方法。
译:此处原文没有说明files IDL属性是否应该被应用于当前元素。
月份状态
若input元素的type属性为月份状态,则应用本节中的规则。
input元素表示一行将当前元素的值设置为一个表示特定月份的字符串。
如果当前元素是可变的,用户代理应该允许用户修改其值所表示的月份,月份通过对其值解析一个月份获得。用户代理禁止用户将其值设为非空且非有效地月份字符串的字符串。如果用户代理提供了一个用于选择月份的用户界面,则其值必须被设为一个表示用户所选择的有效地月份字符串。用户代理应该允许用户将其值设为空字符串。
如果标记了value属性,且其值不为空,则其值必须是一个有效地月份字符串。
值处理算法如下:如果其值不是一个有效地月份字符串,则设其为空字符串。
如果标记了min属性,则其值必须是一个有效地月份字符串。如果标记了max属性,则其值必须是一个有效地月份字符串。
step属性用月来表示。步长因子是1(没有转换的必要,其他算法会使用月为单位)。默认步长为1个月。
若元素出现步长不匹配,则用户代理可能会将当前元素的值四舍五入到最近的不会使该元素出现步长不匹配的月份。
将字符串转换为数值的算法如下:如果从input解析一个月份出现错误,则返回一个错误;否则,返回从1970年一月到解析后的月份的月数。
将数值换为字符串转的算法如下:返回一个有效地月份字符串,该字符串表示1970年一月之后input个月的月份。
将字符串转换为Date对象的算法如下:如果从input解析一个月份出现错误,则返回一个错误;否则,返回一个表示解析后的月份在UTC当月第一天凌晨零点的Date对象。
将Date对象转换为字符串的算法如下:返回一个在UTC时区下input表示的月份在当前时间的有效地月份字符串。
- 下列通用input元素内容属性、IDL属性、方法将应用于当前元素:autocomplete、list、max、min、readonly、required和、step内容属性;list、value、valueAsDate、valueAsNumber和selectedOption IDL属性;stepDown()和stepUp()方法。
- 向当前元素应用value IDL属性,且该属性在value模式。
- 应用input和change事件。
- 下列内容属性禁止标记且不能应用于当前元素:accept、alt、checked、dirname、formaction、formenctype、formmethod、formnovalidate、formtarget、height、maxlength、multiple、pattern、placeholder、size、src和width。
- 下列IDL属性和方法不能应用于当前元素:checked、files、selectionStart、selectionEnd、selectionDirection IDL属性;select()和setSelectionRange()方法。
周状态
若input元素的type属性为周状态,则应用本节中的规则。
input元素表示一行将当前元素的值设置为一个表示特定周的字符串。
如果当前元素是可变的,用户代理应该允许用户修改其值所表示的周,周通过对其值解析一个周获得。用户代理禁止用户将其值设为非空且非有效地周字符串的字符串。如果用户代理提供了一个用于选择周的用户界面,则其值必须被设为一个表示用户所选择的有效地周字符串。用户代理应该允许用户将其值设为空字符串。
如果标记了value属性,且其值不为空,则其值必须是一个有效地周字符串。
值处理算法如下:如果其值不是一个有效地周字符串,则设其为空字符串。
如果标记了min属性,则其值必须是一个有效地周字符串。如果标记了max属性,则其值必须是一个有效地周字符串。
step属性用周来表示。步长因子是604,800,000(将周转换为毫秒,用于其他算法)。默认步长为1周。默认基础步长为-259,200,000(1970年第一周的开始)。
若元素出现步长不匹配,则用户代理可能会将当前元素的值四舍五入到最近的不会使该元素出现步长不匹配的最近的周。
将字符串转换为数值的算法如下:如果从input解析一个周出现错误,则返回一个错误;否则,返回从UTC时区下1970-01-01凌晨零点(该时间通过值“1970-01-01T00:00:00.0Z”表示)到解析后的周在UTC时区下凌晨零点的毫秒数,忽略闰秒。
将数值换为字符串转的算法如下:返回一个有效地周字符串,该字符串表示UTC时区下1970-01-01凌晨零点(该时间通过值“1970-01-01T00:00:00.0Z”表示)之后input毫秒的周。
将字符串转换为Date对象的算法如下:如果从input解析一个周出现错误,则返回一个错误;否则,返回一个表示解析后的周在UTC时区下周一凌晨零点的Date对象。
将Date对象转换为字符串的算法如下:返回一个在UTC时区下input表示的周在当前时间的有效地周字符串。
- 下列通用input元素内容属性、IDL属性、方法将应用于当前元素:autocomplete、list、max、min、readonly、required和、step内容属性;list、value、valueAsDate、valueAsNumber和selectedOption IDL属性;stepDown()和stepUp()方法。
- 向当前元素应用value IDL属性,且该属性在value模式。
- 应用input和change事件。
- 下列内容属性禁止标记且不能应用于当前元素:accept、alt、checked、dirname、formaction、formenctype、formmethod、formnovalidate、formtarget、height、maxlength、multiple、pattern、placeholder、size、src和width。
- 下列IDL属性和方法不能应用于当前元素:checked、files、selectionStart、selectionEnd、selectionDirection IDL属性;select()和setSelectionRange()方法。
时间状态
若input元素的type属性为时间状态,则应用本节中的规则。
input元素表示一行将当前元素的值设置为一个表示特定时间的字符串。
如果当前元素是可变的,用户代理应该允许用户修改其值所表示的时间,时间通过对其值解析一个时间获得。用户代理禁止用户将其值设为非空且非有效地时间字符串的字符串。如果用户代理提供了一个用于选择时间的用户界面,则其值必须被设为一个表示用户所选择的有效地时间字符串。用户代理应该允许用户将其值设为空字符串。
如果标记了value属性,且其值不为空,则其值必须是一个有效地时间字符串。
值处理算法如下:如果其值不是一个有效地时间字符串,则设其为空字符串。
如果标记了min属性,则其值必须是一个有效地时间字符串。如果标记了max属性,则其值必须是一个有效地时间字符串。
step属性用秒来表示。步长因子是1000(将秒转换为毫秒,用于其他算法)。默认步长为60秒。
若元素出现步长不匹配,则用户代理可能会将当前元素的值四舍五入到最近的不会使该元素出现步长不匹配的最近的时间。
将字符串转换为数值的算法如下:如果从input解析一个时间出现错误,则返回一个错误;否则,返回从当天凌晨零点到解析后的时间的毫秒数,且不存在时间变化。
将数值换为字符串转的算法如下:返回一个有效地时间字符串,该字符串表示当天凌晨零点之后input毫秒的时间。
将字符串转换为Date对象的算法如下:如果从input解析一个时间出现错误,则返回一个错误;否则,返回一个表示解析后的时间在UTC时区下1970-01-01的Date对象。
将Date对象转换为字符串的算法如下:返回一个在UTC时区下input表示的时间部分的有效地时间字符串。
- 下列通用input元素内容属性、IDL属性、方法将应用于当前元素:autocomplete、list、max、min、readonly、required和step内容属性;list、value、valueAsDate、valueAsNumber和selectedOption IDL属性;stepDown()和stepUp()方法。
- 向当前元素应用value IDL属性,且该属性在value模式。
- 应用input和change事件。
- 下列内容属性禁止标记且不能应用于当前元素:accept、alt、checked、dirname、formaction、formenctype、formmethod、formnovalidate、formtarget、height、maxlength、multiple、pattern、placeholder、size、src和width。
- 下列IDL属性和方法不能应用于当前元素:checked、files、selectionStart、selectionEnd、selectionDirection IDL属性;select()和setSelectionRange()方法。
本地日期和时间状态
若input元素的type属性为本地日期和时间状态,则应用本节中的规则。
input元素表示一行将当前元素的值设置为一个表示没有时区偏移信息的本地日期和时间的字符串。
如果当前元素是可变的,用户代理应该允许用户修改其值所表示的日期和时间,日期和时间通过对其值解析一个日期和时间获得。用户代理禁止用户将其值设为非空且非有效地本地日期和时间字符串的字符串。如果用户代理提供了一个用于选择本地日期和时间的用户界面,则其值必须被设为一个表示用户所选择的有效地本地日期和时间字符串。用户代理应该允许用户将其值设为空字符串。
如果标记了value属性,且其值不为空,则其值必须是一个有效地本地日期和时间字符串。
值处理算法如下:如果其值不是一个有效地本地日期和时间字符串,则设其为空字符串。
如果标记了min属性,则其值必须是一个有效地本地日期和时间字符串。如果标记了max属性,则其值必须是一个有效地本地日期和时间字符串。
step属性用秒来表示。步长因子是1000(将秒转换为毫秒,用于其他算法)。默认步长为60秒。
若元素出现步长不匹配,则用户代理可能会将当前元素的值四舍五入到最近的不会使该元素出现步长不匹配的最近的本地日期和时间。
将字符串转换为数值的算法如下:如果从input解析一个日期和时间出现错误,则返回一个错误;否则,返回从1970-01-01凌晨零点(该时间通过值“1970-01-01T00:00:00.0Z”表示)到解析后的本地日期和时间的毫秒数,忽略闰秒。
将数值换为字符串转的算法如下:返回一个有效地本地日期和时间字符串,该字符串表示1970-01-01凌晨零点(该时间通过值“1970-01-01T00:00:00.0Z”表示)之后input毫秒的日期和时间。
- 下列通用input元素内容属性、IDL属性、方法将应用于当前元素:autocomplete、list、max、min、readonly、required和step内容属性;list、value、valueAsNumber和selectedOption IDL属性;stepDown()和stepUp()方法。
- 向当前元素应用value IDL属性,且该属性在value模式。
- 应用input和change事件。
- 下列内容属性禁止标记且不能应用于当前元素:accept、alt、checked、dirname、formaction、formenctype、formmethod、formnovalidate、formtarget、height、maxlength、multiple、pattern、placeholder、size、src和width。
- 下列IDL属性和方法不能应用于当前元素:checked、files、selectionStart、selectionEnd、selectionDirection和valueAsDate IDL属性;select()和setSelectionRange()方法。
下列例子展示了航班预订应用的一部分。该应用使用了一个type属性被设为datetime-local的input元素,并且在随后使用用户所选的机场所使用的时区解释给出的日期和时间。
<fieldset> <legend>目的地</legend> <p><label>机场:<input type=text name=to list=airports></label></p> <p><label>起飞时间:<input type=datetime-local name=totime step=3600></label></p> </fieldset> <datalist id=airports> <option value=ATL label="亚特兰大"> <option value=MEM label="孟菲斯"> <option value=LHR label="伦敦希思罗"> <option value=LAX label="洛杉矶"> <option value=FRA label="法兰克福"> </datalist>
如果该应用使用了datetime类型,则用户将不得不自行进行时区转换,这不利于优化用户体验。