框架:Javascript,Jqgrid
我有以下的javascript函数。它接收字段数组和Jqgrid。它将字段的required属性设置为true。我想传递一个输入字符串'Required',并让该函数将元素'Required'设置为true。这样,我可以重用此函数来设置'Integer','Email'属性等。我正在寻找类似于Javascript中Java反射的功能。如果Javascript中有这样的方法可以指导我吗?
function setRequiredFields(fields, grid){
for (var i = 0; i < fields.length; i++) {
var colProp = $(grid).getColProp(fields[i]);
getColPropEditRules(colProp).Required = true;
getColPropFormOptions(colProp).elmsuffix = " *";
$(grid).setColProp(fields[i], colProp);
}
}
答案 0 :(得分:0)
如果我正确理解了这个问题,你只需要“数组”语法:
function setRequiredFields(fields, grid, propertyName){
for (var i = 0; i < fields.length; i++) {
var colProp = $(grid).getColProp(fields[i]);
getColPropEditRules(colProp) [propertyName] = true;
getColPropFormOptions(colProp).elmsuffix = " *";
$(grid).setColProp(fields[i], colProp);
}
}
那是你在找什么?
答案 1 :(得分:0)
您需要的功能的更正版本可以是
function setRequiredFields(fields, grid) {
for (var i = 0; i < fields.length; i++) {
var colProp = $(grid).jqGrid('getColProp',fields[i]);
if (typeof colProp.editrules === "undefined") {
colProp.editrules = {};
}
colProp.editrules.required = true;
if (typeof colProp.formoptions === "undefined") {
colProp.formoptions = {};
}
colProp.formoptions.elmsuffix = " *";
}
}
您可以额外将$(grid)
缩减为grid
。
关于这些变化的小评论。 editrules的required
属性应该是正确的,没有大写字符。此外,方法getColProp
会返回对应colModel
元素的引用,因此您无需另外使用setColProp
。