【问题标题】:Add attribute without value to htmlOptions将没有值的属性添加到 htmlOptions
【发布时间】:2015-03-04 13:37:59
【问题描述】:

如何强制 Yii 1.x 渲染 HTML5 的无值属性,例如 htmlOptions 数组中的 autofocusreadonly 传递给任何东西?所以,结果我会得到例如:

<input autofocus>

我尝试了设置array('autofocus'=&gt;TRUE);array('autofocus'=&gt;'autofocus');this idea,但这不起作用。它呈现 &lt;field autofocus="1"&gt;&lt;field autofocus="autofocus"&gt; 两者都不是 HTML5 所期望的,因此它们不起作用。

我也试过了(我不知道,为什么我期望它会起作用)array('autofocus'=&gt;NULL);,但是现在 Yii 1.x 删除了这些属性并且根本不渲染。

我还尝试了setting this value using jQuery 的愚蠢解决方法。但是,即使我仔细想想,这也让我感到害怕。必须有更好的解决方案。

这似乎很明显,但我未能在其他来源中找到正确的答案。

【问题讨论】:

  • 自动对焦?我认为这只是在这篇文章中拼错了,对吧?
  • @crafter 当然可以。感谢您指出。刚修好。顺便说一句:您也可以不时在其他帖子上使用edit 链接。这就是 SE 的工作原理! :>
  • 知道了,只是想确保这不是您的问题的原因。我很快就会删除我的 cmets。

标签: html yii attributes


【解决方案1】:

我认为你不能用 yii 做到这一点。您需要自己实现这一点。 Yii 提供CActiveForm#textField正常使用,您需要在高级模式下使用文本字段。我认为没有办法做到这一点,除了编写普通的html &lt;input&gt;标签。可以写html&lt;input&gt;,分配id和name类似yii。

【讨论】:

  • 那很糟糕,因为我使用的是 Bootstrap,而不是纯 Yii 的CActiveForm,所以这将包括很多工作。但是......如果没有其他选择,那么我将不得不遵循这个。
  • 我认为您有两种方法: 1. 编写纯 html 输入标签。 2.使用jquery(正如你在问题中提到的那样)。而且我认为第一种方式更好。
【解决方案2】:

根据Yii Framework 1.x 论坛管理员Maurizio Domba Cerin,您应该像这样使用属性CHtml::renderSpecialAttributesValue(从Yii 1.1.13 开始可用)(将其设置为FALSE):

CHtml::$renderSpecialAttributesValue = FALSE;

这将告诉CHtml 类以不带值的方式呈现所有字段的属性,它是在 HTML5 中引入的(即&lt;input autofocus&gt;)而不是“旧”XHTML 方式(&lt;input autofocus="autofocus")。

【讨论】:

    【解决方案3】:

    我刚刚发现以某种方式是可能的。所有现代浏览器都平等对待以下几行:

    <input autofocus>
    <input autofocus="autofocus">
    

    所以,基本上,你不能向 Yii 添加 key-only 属性,但你可以添加 'autofocus' =&gt; 'autofocus''autofocus' =&gt; true,它的行为方式相同。它适用于CHtml::activeTextField 以及通常的input

    【讨论】:

    • 浏览器接受它并不总是意味着 HTML5 有效性检查器不会将此视为错误。我不记得细节了,我也没有机会检查这个,但我多年来一直在使用autofocus="autofocus",如果我没记错的话,那么这不是 HTML5 有效的。我认为,&lt;input autofocus&gt; 是必需的。但是,我可能错了。
    • 至少,这种方法对我有用,没有任何错误,所以我很满意。
    • 正如我所说,我可能错了。但是,您是否通过 HTML5 验证器、CSS 验证器等工具放置您的网站?事实上,您的控制台没有报告任何错误(即您的网站语法正确)并不总是意味着您的网站不会在验证器上失败(即语义 正确)。如果我没记错的话,您的解决方案在语法上是正确的,但在语义上是不正确的。如果您愿意,请在验证器中亲自查看。我自己的页面至少有十几个在控制台中没有报告任何错误,而在语义验证器中有数百个页面!
    猜你喜欢
    • 2018-10-04
    • 2012-05-24
    • 1970-01-01
    • 2017-02-04
    • 2015-02-26
    • 2015-05-20
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    相关资源
    最近更新 更多