我可以在HTML属性值中添加什么值?

时间:2011-03-16 01:52:47

标签: html html5

我是否需要在html属性值中转义引号?允许使用哪些字符?

这有效吗?

<span title="This is a 'good' title.">Hi</span>

6 个答案:

答案 0 :(得分:41)

如果您的属性值被引用(以双引号"开头和结尾),则允许使用除双引号和&符号之外的任何字符,必须引用&quot;和{{1}分别(或等效的数字实体引用,&amp;&#34;

您还可以在属性值周围使用单引号。如果这样做,您可以在属性中使用文字双引号:&#38;。为了在这样的属性值中转义单引号,必须使用数字实体引用<span title='This is a "good" title.'>...</span>,因为某些浏览器不支持命名实体&#39;not defined in HTML 4.01)。

此外,您还可以创建没有引号的属性,但这会进一步限制您可以拥有的字符集,禁止使用空格,&apos;=,{{1属性中的},'"<

有关详细信息,请参阅the HTML5 spec

答案 1 :(得分:4)

这是有效的。但是,如果您必须在内部放置双引号,则必须使用&quot;进行转义:

<span title="This is a &quot;good&quot; title.">Hi</span>

答案 2 :(得分:3)

值可以是任何值,但您应该转义引号(&quot;&apos;),标记分隔符(&lt;&gt;)和&符号({{1} })。

答案 3 :(得分:3)

不,你不需要在双引号内转义单引号。

此页面指定span标记的有效属性:

http://www.w3.org/TR/html401/struct/global.html#edef-SPAN

此页面指定title属性中允许的有效字符:

http://www.w3.org/TR/html401/intro/sgmltut.html#attributes

答案 4 :(得分:1)

是的,没关系。问题是当你尝试在属性中放入双引号时。像这样:

<span title="This is a "bad" title.">Hi</span>

您可以通过使用HTML实体来解决这个问题:

<span title="This is a &quot;good&quot; title">Hi</span>

答案 5 :(得分:0)

这是一个验证函数,使用基于Brian Campbell答案的正则表达式,最坏情况下是一个不带引号的属性。

validator: function (val) {
  if (!val || val.search(/['"=<>`]+|(&\s)+/) === -1) return true;
    return 'Disallowed characters in HTML attributes: \' " = < > ` &.';
},