簡體   English   中英

jQgrid:禁用復選框單擊,僅在單擊復選框時選擇復選框

[英]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和哪個分支( 免費的jqGridGuriddo 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM