我有一個網格用於編輯用戶(權限,名稱等)。
我也有一個密碼字段,它在編輯模式下是隻寫的。
含義 - 密碼不顯示,但如果用戶爲此字段插入一個值,則密碼將被更改。
我的問題是,編輯現有的用戶時,我顯然希望密碼字段是可選的。但是當添加一個新用戶時,我想讓這個字段是必需的。
這是如何實現的?
謝謝jqgrid不同editrules添加和編輯時
回答
對於您的問題,您可以在編輯和添加時使用不同的驗證方法。
例如:
function validate_add(posdata, obj)
{
if(posdata.PASSWORD==null || posdata.PASSWORD=="" || posdata.PASSWORD==undefined)
return [false, "Please enter the pasword"];
return [true, ""]; }
function validate_edit(posdata, obj) { //you can ignore this because you dont want to verify password }
// in jqgrid
grid.navGrid('#pager',{add:true,addtext:'Add',edit:true,edittext:'Edit',del:true,deltext:'Del', search:true,searchtext:'Find',refresh:true}, //options {width:700,reloadAfterSubmit:true, beforeSubmit:validate_edit}, // edit options {width:700,reloadAfterSubmit:true, beforeSubmit:validate_add}, // add options {}, //del options {} //search options );
桑迪普發佈正確的代碼,因爲beforeSubmit
可用於自定義驗證。
有其他方法可以做你想做的事。一個不能定義不同editrules,但可以更改beforeCheckValues方法內部的editrules
對象的值,例如或其他一些form edit eventsform edit events之前驗證檢查。
這裏是代碼的架構,可以改變editrules
:
var grid = $("#list"),
getColumnIndexByName = function(columnName) {
var cm = grid.jqGrid('getGridParam','colModel'), // grid[0].p.colModel
i=0, l=cm.length;
for (; i<l; i++) {
if (cm[i].name===columnName) {
return i; // return the index
}
}
return -1;
},
addEditrulesPassword={required:true /*some other settings can follow*/},
editEditrulesPassword={required:false /*some other settings can follow*/};
// ... first of all we define the grid
grid.jqGrid({
// all parameters including the definition of the column
// with the name 'Password' inside of `colModel`
});
grid.jqGrid(
'navGrid','#pager',{/*navGrid options*/},
{//Edit dialog options
},
{//Add dialog options
beforeCheckValues:function(postdata,$form,oper) {
// get reference to the item of colModel which correspond
// to the column 'Password' which we want to change
var cm = grid[0].p.colModel[getColumnIndexByName('Password')];
cm.editrules = addEditrulesPassword;
},
onclickSubmit:function(ge,postdata) {
// get reference to the item of colModel which correspond
// to the column 'Password' which we want to change
var cm = grid[0].p.colModel[getColumnIndexByName('Password')];
cm.editrules = editEditrulesPassword;
}
}
);
我使用方法「setColProp」這個
......
{ //Edit dialog options
beforeCheckValues: function(postdata, formid, mode) {
grid.setColProp('Password', {editrules: {required: false}});
},
{ //Add dialog options
beforeCheckValues: function(postdata, formid, mode) {
grid.setColProp('Password', {editrules: {required: true}});
}
我找到了聯編輯有點髒的解決方案:
function inlineCustomValidation(value, colname) {
var savedRow = jQuery("#grid").getGridParam("savedRow");
if (savedRow[0].some_required_field == "")
//add operation validation
} else {
//edit operation validation
}
};
savedRow array。這是一個只讀屬性,用於內聯和單元格編輯模塊以存儲數據,然後編輯行或單元格。請參閱單元格編輯和內聯編輯。
下面的腳本來驗證的jqGrid聯編輯細胞,它不會允許用戶以不同的點輸入任何特殊字符(。)用於指定小數點
{ name: 'Amount', width: 22, label: 'Cost', editable: true, align: "right", sorttype: 'int', search: false, formatter: 'currency', formatoptions: { prefix: "$", thousandsSeparator: ",", decimalPlaces: 2, defaultValue: '0.00' },
editoptions: {
dataInit: function(element) {
$(element).keypress(function (e) {
if (e.which != 8 && e.which != 0 && e.which != 46 && (e.which < 48 || e.which > 57)) {
return false;
}
});
}
}
},
- 1. 如何在jqGrid中添加和編輯表單的不同編輯選項
- 2. jqGrid從navGrid添加/編輯不工作
- 3. jqGrid - 動態更改列模型上的可編輯屬性時出現editrules
- 4. 添加和編輯的不同字段
- 5. JQGrid爲添加,編輯,刪除設置不同的URL
- 6. jqGrid的添加和編輯表單屬性不工作
- 7. Jqgrid添加和編輯url不能按預期工作
- 8. 上傳文件添加/編輯jqgrid?
- 9. Jqgrid無法添加或編輯數據
- 10. jqgrid編輯並添加「tab」鍵的行
- 11. jqgrid - 編輯新添加的行
- 12. 將編輯鏈接添加到JQGrid
- 13. 的jqGrid - 添加/編輯對話框
- 14. JQGRID(開源)示例代碼MYSQL和編輯和添加行
- 15. jqGrid寬度/高度jqGrid添加/編輯面板
- 16. jqGrid - 在導航器上添加,刪除和編輯行
- 17. jqgrid,幫助添加,編輯和刪除行
- 18. 如何添加編輯和刪除圖標在jQGrid操作列
- 19. JQGRID - 我正在使用添加新記錄和編輯表格
- 20. jqGrid內聯編輯添加新行後不工作
- 21. 的jqGrid - 添加,編輯,刪除不工作
- 22. jqGrid - 添加,編輯,搜索按鈕不起作用
- 23. jqgrid編輯,保存和esc
- 24. jEditable編輯和添加行
- 25. jqgrid - 如何在編輯或添加記錄時將jquery ui選項卡添加到jqgrid對話框中?
- 26. 編輯模式下的Uitableview:如何同時添加「+」(添加)和「 - 」(刪除)按鈕?
- 27. Jqgrid使用editrules時關注當前單元格
- 28. 禁用編輯(添加,編輯和刪除)的jqGrid,而不是隱藏(默認行爲)
- 29. 添加/編輯
- 30. 在jqgrid添加/編輯表單中顯示列的兩個編輯字段
你是對的,'beforeSubmit'可以用於自定義驗證。所以,從我+1。在你的答案被接受後,我會發布另一種方式的描述:如何使用*標準驗證*與'editrules',但是**添加和編輯對話框有兩個不同的**'editrules'值。 – Oleg 2011-05-23 10:24:20
恐怕你不能這樣做
editrules
,因爲editrules是common_rules
模塊,這是常見的添加和編輯...它會很好,如果你可以做到這一點... – Sandeep 2011-05-23 10:51:29@Sandeep:有沒有辦法**定義**不同的'editrules',但是可以**改變'beforeCheckValues'方法內'editrules'對象的值,或者其他[form編輯事件](http://www.trirand .com/jqgridwiki/doku.php?id = wiki:form_editing#events)在驗證檢查之前調用。 – Oleg 2011-05-23 10:57:14