2013-02-11 42 views
0

我不確定這甚至是可能的。我有一個使用javascript和css構建的UI,界面用戶使用按鍵進行導航。 Css用於每個客戶端更改的佈局,如「皮膚」。 Javascript控制這些功能並監視用戶的按鍵。如何通過CSS禁用「向上」箭頭

設置有兩個菜單,一個較低的和一個較高的。當你加載它時,下面的那個被聚焦,你可以使用左或右箭頭在菜單項之間移動。

在正常情況下,您可以按「上」來獲得上層菜單,但是這個客戶端根本不需要這個菜單。

問題是,我們不能只是簡單地編輯javascript來防止它,因爲所有的客戶端使用相同的JavaScript,只有不同的CSS基於選擇哪個客戶端加載。

所以現在我隱藏了上層菜單,但問題在於javascript仍然允許您按下,但現在由於頂層菜單不存在,您失去了焦點,並且沒有任何內容突出顯示。最終用戶不知道他們爲什麼或者他們如何因失誤而失去焦點。 (因爲他們知道頂部菜單沒有不同的設置,他們沒有意識到他們應該按下,當他們按左/右時他們只知道似乎沒有發生)

我想要做的是不知何故,在CSS中,防止用戶加緊。因爲我們不能只是去改變JavaScript。

這可能嗎?或者是我唯一的解決方案來修改JavaScript?

TIA !!爲了澄清,我們將製作一個新版本,其中包含一個函數來檢查客戶是否想要其他菜單,如果不是,則禁用向上按鈕,但是這需要新版本的該軟件以及全面通過QA。只是試圖快速破解這一個客戶端在同一時間.. :)

我們的最終解決方案將在數據庫中有一個布爾字段,如果它是真的,JavaScript將有一個忽略的向上鍵,如果false ,然後正常行動。

+4

更改您的Javascript以對存在的CSS類(或元素的可見性)做出反應 – SLaks 2013-02-11 18:15:05

+0

正如@SLaks所說,由於「上層菜單」不存在,因此只能使用「向上」功能元素被找到。 – Shmiddty 2013-02-11 18:17:21

+1

http://whathaveyoutried.com,請張貼一些或鏈接到*小提琴,以便我們可以看到你在做什麼。 – BryanH 2013-02-11 18:22:04

回答

1

不幸的是,通過CSS來禁用組件,對於這種類型的功能沒有正確的方法是爲JavaScript的。

我曾與大多數程序員的哲學是,你應該允許最終用戶決定他們是否要使用新功能。

我的意思是,你應該在應用程序中留下一個選項,讓用戶自行禁用組件。通過這種方式,您可以爲所有用戶使用相同的JavaScript集,並仍然以正確的方式禁用任何組件。真正的優勢在於,您不必再次處理此票證,支持人員可以通過重新創建所請求的功能簡單地走過任何客戶端。

但是,大多數此解決方案可能無法使用。我知道改變你的工作場所習俗並不容易。

這裏有些東西可能會更有用,How do I disable form fields using CSS?某些建議可能適用於任何組件,包括菜單。

+1

我不同意這個作爲一個整體陳述。大多數程序員的理念是獲得報酬。讓用戶瞭解用戶界面設置並不是我見過的常見事情,通常會產生更多的支持混亂而不是鎖定它。 – JDB 2013-02-11 18:26:22

+0

如果您爲選項正確設置界面,我從來沒有遇到過任何問題。你在哪個領域工作? – 2013-02-11 18:27:32

+0

這是計劃在「下一個版本」,但無法預料的客戶要求和意願。 – Drew 2013-02-11 18:44:39

2

更改代碼,使其僅在不存在元素時才用於向上按鍵。

EG添加pclass="noupkey"然後從喜歡射擊停止事件:

if($('.nokeyup').length === 0) { 
//Do normal behaviour 
} 
+1

您可能想要考慮一些更「普遍」的內容,例如應用「inputDisabled」類(將來可以在多個上下文中重用)。 – JDB 2013-02-11 18:24:07

0

其實這是非常奇怪的解決方案,但它可以做一點棘手的解決方案。

使一個具有更多Z-index的透明Div與身體上的絕對位置通過上按鈕,對於其他應用程序將指針事件Css屬性應用於none,因此您的鼠標事件將在Below Div上完成。

然後,對於您想要禁用該控件的情況,請不要將指針事件指向最前面的div,否則將禁用鼠標事件。

注意:IE中的指針事件存在一些問題。