2010-08-04 117 views
2

我有一個帶有日曆圖標的文本框。點擊圖標時,彈出窗體顯示日曆控件。我已經設置了他們只能選擇星期結束日期(星期六)的地方,並且該日期顯示在文本框中。防止用戶在文本框中修改日期

我想阻止用戶編輯文本框。我試過使用只讀和啓用屬性,但不起作用。

如何防止用戶在文本框中修改日期?

(我使用該網站的淨時間跟蹤入門套件模板)

回答

0

你可以調用JavaScript blur()onfocus事件。

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!IsPostBack) 
    { 
     txtStartDate.Attributes.Add("readonly", "readonly"); 
     txtEndDate.Attributes.Add("readonly", "readonly"); 
    } 
} 

它的工作原理,它是非JavaScript的依賴。

+0

但是複製和粘貼呢? – w69rdy 2010-08-04 16:36:25

+0

@ w69rdy - 見我最新的解決方案。 – dcp 2010-08-04 16:37:22

0

我知道這是一個黑客,但你總是可以保存選定的日期作爲變量。然後使用在值更改時調用的actionlistener。如果日期無效(即不是一週結束日期),則用已保存的變量替換文本框。否則,如果日期是值,則替換變量,以便用戶更改它。

1

嘗試使用標籤,而不是樣式來看起來像一個文本框。您也可以將文本框的啓用屬性設置爲false,但這可能對您無效,具體取決於您正在做什麼。替代方案可能使用一些JS來防止對值的更改,但這可能會非常複雜。從服務器端設置文本框爲只讀屬性

<asp:TextBox onfocus="blur();" ... /> 
0

如果用戶不應該編輯文本框中的文本,則不應該使用文本框。 使用標籤。

+0

我不同意。我的普通用戶會因爲標籤而迷路,而使用文本框,至少他們知道如果通過將光標懸停在光標上來改變光標,可以點擊它(這將觸發日曆彈出窗口)。 – rebelliard 2010-08-04 21:35:24

+0

我爲此使用日曆圖標並將文本框保留爲可編輯狀態。 – Jeroen 2010-08-04 22:29:40