输入需要“类型”吗?

时间:2013-05-12 13:13:09

标签: html css input

所以我再次进行哲学辩论;

当您想要的只是文字输入时,是否应为type指定input

type的默认值当然是text,因此省略默认属性可以完成您想要的操作,并在标记中保存12个字节。

然而,我不禁觉得这有点不对劲。一个真实场景是实现Formalize等库;如果没有明确的type s,它就不会触及元素。

给我的替代方法是使用:not([type])来杀死IE8支持,或者将文本输入样式应用于所有input,然后为submit s全部撤消它们和其他看起来不像文本框的人。当我只在标记中写type时,这两个听起来都非常简单。

它也让我错误地认为假设浏览器将会直到知道你的意思而不明确定义它。例如,在Windows中成长我只是假设Times New Roman是网页上的默认字体。然后我安装了Ubuntu,男孩很惊讶。

不定义type是不好的形式?是否有任何令人信服的理由不定义它?还有其他问题没有指定type并依赖于我提到的默认值吗?此默认设置是否适用于旧浏览器?非特定input的可访问性如何?

6 个答案:

答案 0 :(得分:3)

type元素不需要<input>属性。如您所述,默认为text。然而,尽管这些是HTML定义的语义,但有些工具并不尊重这一点。因此,明确指定它会更安全。

  

它还错误地让我错误地认为假设浏览器将一直到知道你的意思而不明确定义它。

它是由HTML规范明确定义的。没有<input>属性的type元素默认为text类型。除非以这种方式处理事情,否则浏览器无法正确呈现HTML。您正在做的唯一假设是这是未指定的行为。阅读规范。

  

例如,在Windows中成长我只假设Times New Roman是网页上的默认字体。

不同之处在于没有规范将此定义为默认值。

答案 1 :(得分:3)

根据规范,默认类型始终是文本,如您所说。如果我们要读取它,那么这意味着默认值将“始终”为文本。我认为,出于正确性的目的,如果出于可读性的目的没有其他原因,则应始终在元素中定义类型。我也同意指定类型确保不会对元素的目的进行任何猜测,并且应该始终使用。

话虽如此,在使用<script>标签时,我们是否始终指定一种“text / javascript”?我知道我不是所有的时间。

答案 2 :(得分:1)

我每次都会定义type-attribute,因为你永远不知道将来需要和使用哪种库。

写'type =“text”'并不需要那么多时间,但如果有任何外部代码需要它,它可以节省你很多时间。我想,问问题比编写代码要花费更多时间。 :)

在几年前的一个项目中,我曾经在模板中快捷地使用PHP-Echo。一切正常,直到我用另一个PHP配置更改主机,这不允许快捷方式。所以我不得不编辑我的整个代码,因为我几周之前太懒了。它只是复制/粘贴,但是当你使用Git或SVN时很烦人,因为突然几乎每个模板文件都被更新了。

答案 3 :(得分:1)

我认为没有理由不包含该属性。在让浏览器发挥出色,并按照预期渲染页面方面,具体来说几乎总是更好。你有控制权,所以为什么不使用它呢?

你提到额外的字节也很有趣,因为听起来好像这可能是你真正关心的问题,所以我认为这是一个大型网站。话虽如此,缩小你的源代码会比担心明确指定type属性更好。

答案 4 :(得分:0)

从HTML5开始,属性type可以设置为以下值。我建议使用正确的,因为移动浏览器有时会根据其类型使用不同的键盘形式。但不,如果忽略该属性,世界将不会结束,它的默认值是文本。

话虽如此,通过不使用它,无论如何它将被设置为type="text"。我个人总是设置它,即使它被设置为text

  • 按钮
  • 复选框
  • 颜色
  • 日期
  • 日期时间
  • 日期时间本地
  • 电子邮件
  • 文件
  • 隐藏
  • 图像
  • 密码
  • 无线电
  • 范围
  • 重置
  • 搜索
  • 提交
  • 电话
  • 文本
  • 时间
  • URL

答案 5 :(得分:-2)

type属性不是必需的,但您可以使用它来指定“按钮”,“密码”,“收音机”等。