将没有值的属性添加到htmlOptions

时间:2015-03-04 13:38:00

标签: html5 yii attributes

如何强制Yii 1.x在没有值的情况下呈现HTML5的属性,例如传递给autofocus数组的readonlyhtmlOptions?所以,结果我得到了例子:

<input autofocus>

我尝试this idea设置array('autofocus'=>TRUE);array('autofocus'=>'autofocus');,但这不起作用。它呈现的是<field autofocus="1"><field autofocus="autofocus">,而且两者都不是HTML5所期望的,所以它们不起作用。

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

我还尝试了setting this value using jQuery的愚蠢解决方法。但是,如果我考虑一下,这甚至会让我感到害怕。必须有一个更好的解决方案。

这看起来很明显,但我找不到合适的答案,在其他方面也是如此。

3 个答案:

答案 0 :(得分:1)

我认为你不能用yii做到这一点。你需要自己实现这个。 Yii为正常使用提供CActiveForm#textField,您需要在高级模式下使用文本字段。我认为没有办法做到这一点,除了写简单的html <input>标签。您可以编写html <input>并指定类似于yii的id和name。

答案 1 :(得分:1)

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

CHtml::$renderSpecialAttributesValue = FALSE;

这将告诉CHtml类在没有值的情况下呈现所有字段的属性,它是在HTML5中引入的(即<input autofocus>)而不是“旧的”XHTML方式(<input autofocus="autofocus" )。

答案 2 :(得分:1)

我刚刚发现它在某种程度上是可能的。所有现代浏览器都平等对待以下行:

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

因此,基本上,您无法向Yii添加仅键属性,但您可以添加'autofocus' => 'autofocus''autofocus' => true,它的行为方式也相同。它适用于CHtml::activeTextField以及通常的input