我正在使用CakePHP的字段验证和标准的基于CSS的“必填字段”指示符(红色星号),除了(当然)IE7和IE6之外,它对所有浏览器都有效。
我似乎不喜欢构建指标的CSS。我在2008年发现了Mark Story(此处为http://mark-story.com/posts/view/hacking-the-cakephp-formhelper-adding-required-indicators)的博客文章,该博客建议黑客攻击Cake代码以正确显示它。这已经超过2年了,我希望为此创建一个更好的解决方案,或者在那时发布的新版Cake中以某种方式解决它。这是一个标准的东西,我无法想象它还没有得到解决。
我在StackOverflow或谷歌搜索中找不到任何明显的东西。我只是在密集而且缺少明显的东西吗?有没有标准/简单的方法来做到这一点,或者是基于图像的修复(如上述帖子的一位评论者所建议的)要走的路?
答案 0 :(得分:1)
你可以让字段变粗或类似
答案 1 :(得分:1)
我最终使用了Mark Story博客上匿名海报的解决方案。只需在site.css文件中的表单.required标签:after 定义之后添加这个额外的CSS定义。 (在CakePHP的默认site.css文件中的第363行附近。)
div.required label {
stupid-ie-be-more-funny: expression(this.doneReq ? '1' : (
function(el) {el.innerHTML += '<span title="Required!" style="color:#f00;"> *</span>'; return el.doneReq=true;})(this));
}
这对我来说在IE 6和7中运行良好。我仍然喜欢红色的星号,因为它们在视觉上更加突出,特别是我所针对的人口统计(老用户)。
答案 2 :(得分:0)
简单的事实是IE6和IE7不支持CSS :before
和:after
伪类。
没有办法解决这个问题,也没有任何我知道的黑客可以让他们支持它。
我首选的解决方法是忽略它。让他们大胆(正如其他人的建议)让IE6用户看到一些东西,但坦率地说,IE6和IE7只是浏览器市场的一小部分,并且迅速变小。
如果你必须给他们一个askerisk,那么我建议的最好的解决方法是用图像而不是'*'替换它。将图片设置为标签的background-image
,将其与x-repeat:none;
的一侧对齐,并在同一侧的padding
将标签文字移开,这样背景图片可以看出。
此方法通常用于项目符号,因此应该适用于“必需”标记。但我宁愿坚持你所拥有的,并假装IE6和IE7不存在。这不像他们会错过它或任何东西。