[英]jQgrid: Disable checkbox click and select checkbox only when checkbox is clicked
我正在使用使用multiselect選項的jqgrid。 我必須實現兩種不同的功能。
功能1:我必須禁用復選框,具體取決於某些條件。 為此,我在beforrowselect事件中使用下面的代碼塊。
beforeSelectRow: function(rowid, e) {
if( $("#jqg_TableId_"+rowid).attr("disabled") ){
return false;
}
return true;
}
此代碼塊的功能正常工作。
功能2:但是問題是,當我單擊行中的任意位置時,該復選框被選中,但該復選框的值顯示不正確。 當我在復選框區域內單擊時,復選框的值是准確的。 為此,我想限制用戶完全單擊復選框區域以使復選框被單擊。 為此,我使用下面提到的代碼塊。
beforeSelectRow: function(rowid, e) {
return $(e.target).is('input[type=checkbox]');
},
如果我單獨使用任何一個塊,則該功能可以正常工作。 我需要實現這兩個功能,但要實現兩個塊的返回值。 這兩個條件都不可能返回值。 請幫幫我如何實現這兩個功能。
以下是我必須實現的完整代碼。
beforeSelectRow: function(rowid, e) {
if( $("#jqg_TableId_"+rowid).attr("disabled") ){
return false;
}
return true;
}
return $(e.target).is('input[type=checkbox]');
},
在每個問題中都必須使用哪個版本的jqGrid和哪個分支( 免費的jqGrid , Guriddo jqGrid JS或版本<= 4.7的舊jqGrid)。 我想您描述的問題是存在的,因為您使用的是舊版本的jqGrid。
演示https://jsfiddle.net/OlegKi/4ga1ekh3/3/使用免費的jqGrid 4.12.1(這是我一年多開發的jqGrid的分支)和以下代碼
beforeSelectRow: function (rowid, e) {
var item = $(this).jqGrid("getLocalRow", rowid);
if (item.closed) {
return false;
}
return true;
}
拒絕選擇已closed: true
的行closed: true
屬性。 單擊行上任何位置的方式與單擊復選框的方式相同。
我將建議您考慮使用另一種方法,我在答案中對此進行了描述。 它只是設置
rowattr: function (rd) {
if (rd.closed) {
return {
"class": "ui-state-disabled ui-jqgrid-disablePointerEvents"
};
}
}
參見另一個演示https://jsfiddle.net/OlegKi/4ga1ekh3/4/ 。 它在“封閉”行上設置了禁用的類,以防止在單擊選擇列的列標題(選擇全部功能)的情況下選擇該行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.