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不存在。這不像他們會錯過它或任何東西。