2011-05-01 38 views
1

我有一個使用jQuery和jQuery UI和Ajax的asp.net 4.0頁面。jquery禁用控件和單擊提示

問題:頁面可能正在顯示記錄被標記爲不可編輯(在代碼中,而不是從SQL Server數據庫記錄狀態)的數據。僅供參考:頁面在從服務器加載時被標記,而不是基於某些用戶輸入。

當被標記爲不可編輯時,我需要在頁面上做很多事情。

禁用一些選擇和文本輸入和按鈕。

當用戶嘗試編輯(或點擊)這些控件時,我需要顯示警報。

有人可以幫助我用最光滑的方式來實現這一目標嗎?

我只是將一個類應用於所有這些控件,然後將jquery事件綁定到該類上?

+0

這裏有個邏輯問題:一旦你禁用了某個元素,那個元素上就沒有點擊事件。它被禁用。 – 2011-05-01 13:50:04

回答

2

禁用表單元素不會觸發click事件,但其元素父類仍然可以看到它。您可以勾選容器click事件(例如form),然後查看哪個元素被點擊(通過event.target屬性,jQuery確保跨瀏覽器正確設置)。如果是這些禁用的元素之一,你可以做的提醒:

$("selector_for_the_form").click(function(event) { 
    if (event.target.disabled) { 
    alert("You can't click the " + event.target.name + " field"); 
    } 
}); 

Live example

這隻會在創建事件瀏覽器上運行,讓它傳播。 Firefox和Opera沒有; IE和Chrome做的。

而不是禁用表單字段,但是,您可以考慮將它們設置爲readonlyDetails here。這使事情更可靠(live example)。

1

編輯:剛剛意識到你的後上方說ASP對不起:P 但那裏有可能其他方式使用ASP

做同樣的事情,你可能需要改變任何文本框或輸入你的只讀狀態使用。

如果您使用的是PHP,您可以通過GET傳遞一個變量,並使用它來指示元素是隻讀還是禁用。

E.G.

<input type="textbox" name="box01" <?php if ($_GET["disable"]==true) {echo 'readonly="readonly";} ?> />