2009-10-08 13 views
3

只是爲了搶先「你爲什麼要做到這一點的答覆這裏就是我做的:什麼是CSS樣式我需要做一個只讀文本框控件照看殘疾

如果另一個控件被點擊我進行ajax調用以獲取服務器生成的值並將其填入文本框中。然後,我在客戶端,將控件設置爲只讀(我不想控制被禁用,因爲我需要它回發,所以我設置readOnly屬性)。

不幸的是爲只讀它不「禁用」

我想獲得殘疾文本框的外觀做的.addClass。

我用各種風格mu but,但我沒有接近那樣的樣子。順便說一句,這將是在IE瀏覽器(並可能是IE7或更低,所以沒有大綱風格,我害怕)。

任何想法感激地收到。

回答

0

我剛剛玩過它。我禁用使用JS和JQuery的輸入項目。在表單上,​​我有一個帶有「disabler」類的複選框,以及將被禁用的項目,標記爲「禁用」類。
面臨與您相同的問題,並解決了使用JQuery DOM操作即時刪除隱藏字段的問題。在瀏覽器中正確工作。
此功能綁定了disabler.onClick和form.onLoad:

$.My.InitDisabler = function() { 
    if (!$('.disabler').attr('checked')) { 
     $('.disableable').each(function() { 
      $(this).attr("disabled", "true"); 
      var templ = '<input name="{0}" type="hidden" value="{1}" class="disable_hdn" />'; 
      $(this).after($.format(templ, $(this).attr("name"), $(this).val())); 
     }); 
    } 
    else { 
     $('.disable_hdn').remove(); 
     $('.disableable').removeAttr("disabled"); 
    } 
} 
10

最好的方法是以正常方式禁用文本框,然後拍攝頁面的屏幕截圖並將其加載到圖像編輯器程序中,並獲取文本框背景顏色,邊框顏色等。然後您可以設置它通過CSS像這樣:

input.readOnlyTextBox 
{ 
    background-color: #F2F2F2 !important; 
    color: #C6C6C6; 
    border-color: #ddd; 
} 

但請記住殘疾人的外觀可能會略有不同,從瀏覽器到瀏覽器,但是這將讓你的近似禁用的樣子。

+0

是的,我懷疑沒有大綱樣式(它似乎IE7不支持)我要奮鬥。這是'雙'邊框我有麻煩的樣式。 :o( – user129345 2009-10-08 13:36:08

4

禁用窗體元素從瀏覽器到瀏覽器看起來不同。如果您不希望自己的網站看起來不一致和不穩定,那麼您應該對所有輸入元素或至少所有複選框進行樣式化 - 啓用,禁用和只讀。然後,您可以確定只讀輸入的樣子,而無需嘗試匹配四個或五個不同的瀏覽器。

1

我不想控制被禁用,因爲我需要它回傳因此Im它設置只讀屬性

設置爲禁用,並創建一個隱藏的輸入與包含同名相同的價值做真正的提交。

這是一種黑客攻擊,但只有這樣,才能在所有瀏覽器中可靠地獲得正確的「禁用」外觀才能真正使用「禁用」。這些樣式在跨平臺,瀏覽器,設置和主題方面太不一致了,以便您能夠可靠地重現它。

+0

肯定會打敗CSS,雖然我們在狡猾的黑客身上,但您也可以在提交之前啓用這些字段。 – stuartdotnet 2012-12-19 03:57:16

1

我可以想到兩種方法。

  1. 使用CSS定位在字段頂部放置一個「dummy」禁用字段。這樣它就可以匹配瀏覽器使用的任何風格。如果用戶點擊它,他們點擊禁用字段。
  2. 與#1類似,對要提交的值使用隱藏字段。 「顯示」字段只是一個用於顯示目的的額外字段,可以禁用/啓用並在數據處理時忽略。
0

我發現了一個相關answer此評論:

獲得「只讀」輸入欄,看起來像「禁用「字段,設置'style =」顏色:灰色;背景顏色:#F0F0F0;「'。 - 丹Nissenbaum 2月28 '11在5:05

我試過了,它的作品完美!

綜上所述:

style="color: grey; background-color: #F0F0F0;" 
0

我知道這是得到答覆,但想給我的CSS例子。

因爲當我在尋找解決方案時,如何對輸入字段進行樣式設置,使其看起來像禁用了,我總是以輸入字段看起來像這樣。

enter image description here

隨着border-左&頂部有一個較深的顏色等 因此,一個使用這個CSS代碼解決它。

input[readonly]{ 
    border-color: darkgrey; 
    border-style: solid; 
    border-width: 1px; 
    background-color: rgb(235, 235, 228); 
    color: rgb(84, 84, 84); 
    padding: 2px 0px; 
} 

做了一個jsfiddle所以你們可以仔細看看。

它在Chrome上看起來不錯,在其他瀏覽器上需要修改顏色升技。就像在Firefox中,你也需要改變顏色和背景顏色等。

background-color: rgb(240, 240, 240); 
color: rgb(109, 109, 109); 
相關問題