2011-06-08 78 views
0

我在一個Panel中有我的表單域,如果需要只讀版本,我在Panel上設置Enabled = False。這是快速和骯髒的,結果大多是骯髒的,主要是在IE瀏覽器。無法滾動大型列表框。多行文本框只顯示前幾行。有一些時髦的樣式禁用標籤。什麼是最簡單的方法來禁用表單,但保持可讀性?

對於如何禁用整個表單,讓用戶讀取數據,直觀地指示它被禁用(灰色輸入或文本代替輸入),您有任何想法,但是對服務器保持禁用控制所以它不會加載任何可以通過惡意手段啓用字段來操縱的數據。

(另外,我希望我沒有加入與每個數據字段的標籤。)

回答

1

你可以刪除所有的按鈕和使用jQuery來改變所有投入的背景顏色。這將是一個快速而簡單的解決方案。

$(':input').addClass('disabled'); 
+0

我想我最好的選擇將是這樣的。我需要選擇性地禁用某些表單域。我想我可以檢查WebControl類型並向其添加一個類/ JavaScript處理程序,以向用戶指示他無法編輯此字段。 – 2011-06-09 17:09:17

0

你可以有你的字段指定只讀屬性,即:

<input type="text" name=myText value="Enter Your Name" readonly> 

這可以很容易地與JS做,但如果就在HTML做的是更加堅固。

你也可以禁用甚至刪除提交按鈕。

+1

這是一件小事,但它應該是'readonly =「只讀」'。有些瀏覽器不支持速記。還應該注意,這隻適用於'輸入=「文本/密碼」' – 2011-06-08 20:27:37

+0

這實際上很糟糕。 Google主要失敗。我的壞;)+ 1'讓我直接在這個。 – stefgosselin 2011-06-08 23:52:01

+0

只讀屬性不能在選擇字段上設置,但是正確嗎? – 2011-06-09 17:07:32

0

我會使用ASP 網頁控件。輸入類型的TextBox =「text」。 所有Web控件有啓用財產

<asp:TextBox id="txtSomething" runat="server" /> 

您現在可以啓用/從代碼中禁用所有控件就像你今天(對於面板)。但是你必須爲每一個人做(我不知道你有多少人)。

txtSomething.Enabled = False 

你也可以用JavaScript來做到這一點。 循環表單中的所有元素,並禁用/啓用它們。

function DisableEnableForm(myForm,setDisable){ 
    elems = myForm.elements; 
    for(i=0;i<elems.length;i++){ 
    elems[i].disabled = setDisable; 
    } 
} 

可以觸發從ASP這個JavaScript函數是這樣的:

Button1.Attributes.Add("onclick", "javascript:DisableEnableForm(´form1´,true)"); 
+0

與此相關的問題是瀏覽器以不同的方式處理禁用的字段。在IE中,您不能在文本框或選擇框中的項目中滾動文本。 – 2011-06-09 17:05:22

相關問題