0

我正在使用CakePHP的字段验证和基于标准CSS的'必填字段'指示器(红色星号),它的所有浏览器除了(当然)IE7和IE6 。必填字段指标不工作在IE7和IE6

我似乎他们不喜欢构建指标的CSS。我从2008年的Mark Story(这里是http://mark-story.com/posts/view/hacking-the-cakephp-formhelper-adding-required-indicators)发现了一篇博客文章,暗示黑客代码可以正确显示它。这已经是两年多了,我希望为此创建一个更好的解决方案,或者在当时发布的更新版本的Cake中以某种方式解决它。 IT是这样一个标准的东西,我无法想象它没有得到解决。

我在StackOverflow或Google搜索中找不到任何明显的东西。我是否正在密集和失去一些明显的东西?有没有一个标准/简单的方法来做到这一点,或者是一个基于图像的修复(如上述职位的评论者所建议的)要走的路?

+0

仍然对当前版本的Cake的答案感到好奇,但在Mark的博客文章的第一条评论中提出的CSS解决方案似乎运作良好。 – 2011-01-25 16:40:43

+0

它可能已经超过2年前了,但IE6和IE7在过去两年中都没有得到任何改善,所以他们现在仍然有这些问题。 – Spudley 2011-01-26 09:05:16

回答

1

我最终在Mark Story的博客上使用匿名海报的解决方案。只需在form.required标签后面添加这个额外的CSS定义:在您的site.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我。我仍然喜欢红色星号,因为它们在视觉上更加突出,特别是针对我定位的人群(老用户)。

0

一个简单的事实的东西是,IE6和IE7不支持CSS :before:after伪类。

没有办法解决这个问题,也没有我知道的黑客让他们支持它。

我对此的首选解决方案是忽略它。让他们大胆(正如其他人所建议的那样),以便IE6用户看到一些东西,但坦率地说,IE6和IE7只是浏览器市场的一小部分,而且正在迅速变小。

如果你必须给他们一个askerisk,那么最好的解决办法是我可以建议将其替换为图像而不是'*'。将图片设置为标签的background-image,将其与同一侧的x-repeat:none;padding对齐,以将标签文本移开,以便可以看到背景图片。

此方法通常用于项目符号点,因此应该适用于'必需'标记。但我宁愿只是坚持你所拥有的,假装IE6和IE7不存在。这不像他们会错过它或任何东西。