2010-12-07 33 views
4

說我通過使用jQuery顯示div,但我希望窗口的其餘部分(除div外的所有內容)對用戶無法訪問 - 因此所有控件都被禁用,用戶只能使用該特殊div中的控件執行某些操作?如何阻止使用jQuery進行輸入?

+0

演示在這裏http://jquery.malsup.com/block/#demos – kobe 2010-12-07 19:46:41

+0

正如我所說簡單的修復可以是z-index /// – kobe 2010-12-07 19:47:17

+0

@everyone - 謝謝你所有的答案,所有的樣品都很棒。所以給每個人+1! – dexter 2010-12-08 18:26:33

回答

4

您可以從您的<div>元素構建一個modal dialog

$("#yourDivID").dialog({ modal: true }); 
1

做「jQuery的收藏夾」的搜索,你會發現你是什麼之後,或使用jQuery的模態對話框,在另一個答覆中提到。

我喜歡燈箱,因爲他們用不透明蒙版覆蓋頁面,清楚地顯示控件被禁用/不可訪問。

2

請使用jquery一個簡單的修復博克UI插件

http://jquery.malsup.com/block/

,如果彈出你的z-index比所有的元素更大的背後,你不能碰的項目背後

給予z-index的像1000左右

1

而不是使用完全成熟的插件的東西,就是這麼簡單:

使用第二個div,其css位置爲fixed,其widthheight分別等於window.innerHeight & window.innerWidth屬性。將z-index設置爲較大的值,但小於您顯示的模型對話框的z-index

$('<div />').css({ 
    position: 'fixed', 
    left: 0, 
    top: 0, 
    width: window.innerWidth, 
    height: window.innerHeight, 
    'z-index': 1000 
}); 

正如在評論中提到的那樣,這不會阻止用戶切換到隱藏字段;要做到這一點,你可以綁定一個事件來捕獲標籤印刷機,並取消它:

$(document).bind('keydown', function (event) { 
    if (event.which === 9 && !$(event.target).closest('.model').length) { 
     event.preventDefault(); 
    } 
}); 

給你添加/刪除隨意的事件處理程序的能力,它會更容易做到這一點,像這樣:

function stopTab(event) { 
    if (event.which === 9 && !$(event.target).closest('.model').length) { 
     event.preventDefault(); 
    } 
} 

$(document).bind('keydown', stopTab); // to add 
$(document).unbind('keydown', stopTab); // to remove 

你的模態對話框必須有一類modal這個工作(或簡單地改變選擇)。