所有dataEvents
首先允許您在編輯元素的元素註冊回調。回調內部this
將被初始化爲將被綁定的DOM元素。所以$(this)
裏面的change
處理程序它將包裝在<select>
元素上,而不是在網格上。 $(this).setColProp
的使用將不正確。
要添加/編輯表格禁用某些輸入字段,你可以使用一個事實,即所有投入要素獲得相同的id
像name
財產上的相應列colModel
值。所以,如果你需要禁用的cntrct_id
輸入,您可以在元素上設置disabled
屬性true
與id="cntrct_id"
{
name: 'type_cd',
edittype: 'select',
editoptions: {
dataUrl: 'functions.php',
dataEvents: [{
type: 'change',
fn: function (e) {
// disable input/select field for column 'cntrct_id'
// in the edit form
$("#cntrct_id").prop("disabled", true);
}
}]
}
}
明白editoptions
將被用於任何現有的編輯模式(表單編輯,在線編輯和細胞是非常重要的編輯)。如果要編寫支持所有編輯模式的代碼dataEvents
,則必須檢測編輯模式並使用其他編輯字段的編號。代碼(未經測試)可以如下
{
name: 'type_cd',
edittype: 'select',
editoptions: {
dataUrl: 'functions.php',
dataEvents: [{
type: 'change',
fn: function (e) {
var $this = $(e.target), $td, rowid;
// disable input/select field for column 'cntrct_id'
if ($this.hasClass("FormElement")) {
// form editing
$("#cntrct_id").prop("disabled", true);
} else {
$td = $this.closest("td");
if ($td.hasClass("edit-cell") {
// cell editing
// we don't need to disable $("#cntrct_id")
// because ONLY ONE CELL are edited in cell editing mode
} else {
// inline editing
rowid = $td.closest("tr.jqgrow").attr("id");
if (rowid) {
$("#" + $.jgrid.jqID(rowid) + "_cntrct_id")
.prop("disabled", true);
}
}
}
}
}]
}
}
最後一句話。如果你仍然使用舊版本的jQuery(在jQuery 1.6之前),它不支持prop方法,你必須改用attr。
關於你的答案,奧列格的偉大之處在於你不只是告訴解決方案,你解釋了它的理論。你真棒。 – user 2013-02-19 19:07:36
@MattWall:不客氣!我很高興你喜歡我的問題回答我的風格。我認爲,*解決問題本身就更加重要。 – Oleg 2013-02-19 19:25:19
我也很喜歡Oleg的回答方式,當我開始使用jqgrid時,我從Oleg的答案中得到了大部分jqgrid相關問題的解決方案。謝謝Oleg – Kris 2013-02-20 03:32:59