如何强制Yii 1.x在没有值的情况下呈现HTML5的属性,例如传递给autofocus
数组的readonly
或htmlOptions
?所以,结果我得到了例子:
<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的愚蠢解决方法。但是,如果我考虑一下,这甚至会让我感到害怕。必须有一个更好的解决方案。
这看起来很明显,但我找不到合适的答案,在其他方面也是如此。
答案 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
。