我目前正在分析Javascript中的一个数据表构造函数。
我有一个名为field的变量被传递,它保存了复选框元素的所有值。
因此它进一步被分解为元素的单独变量
var field_value = field.value;
var field_name = field.name;
//The field_hidden is a passed data field to determine if I should hide checkbox.
var field_hidden = field.hidden;
则作为复选框元素返回。
return '<input type="checkbox"' + field_name + htmlEncode(field_value) + field_checked+' >';
我想给这个元素构造函数添加一些额外的功能,但是打印到我的控制台的值是这样的:javascript constructor {jobid}
现在我知道{jobid}
是我的数据字段。这是正确的,但我如何获得实际值来检查它是否存在?
我想让我的复选框隐藏取决于该字段是否为空
下面是js数据表构造函数的一个片段,以进一步了解上下文。
我似乎不能用谷歌或搜索正确的组合来找到我需要的答案,所以我来这里寻求一些关于这个问题的智慧。谢谢你。
我有一种感觉,也许这个构造函数正在下游某处被处理,所以我不能操作它,但我真的不确定。
{
targets: 'dt-checkbox',
type: 'num',
orderDataType: 'dom-checkbox',
render: {
display: function(data, type, row, meta) {
// Changes cell to checkbox given field_value and field_name
var opts = meta.settings.aoColumns[meta.col].dt_opts;
if(typeof opts === 'undefined') {
opts = meta.settings.aoColumns[meta.col].dt_opts = {};
}
var field = opts.field
if(typeof field === 'undefined') {
field = opts.field = {};
}
var field_value = field.value;
var field_name = field.name;
var field_checked = field.checked;
//The field_hidden is a passed data field to determine if I should hide checkbox.
var field_hidden = field.hidden;
console.log("This is the field_hidden", field_hidden);
// Resolve fieldnames to values
var re = /^{(.+)}$/;
if(typeof(field_value) !== 'undefined' && field_value !== null) {
var match = field_value.match(re);
if(match) {
var field_value_fieldname = match[1];
field_value = row[field_value_fieldname];
}
field_value = ' value="' + field_value + '"';
}
if(typeof(field_name) !== 'undefined' && field_name !== null) {
var match = field_name.match(re);
if(match) {
var field_name_fieldname = match[1];
field_name = row[field_name_fieldname];
}
field_name = ' name="' + field_name + '"';
}
if(typeof(field_checked) !== 'undefined' && field_checked !== null) {
var match = field_checked.match(re);
if(match) {
var field_checked_fieldname = match[1];
field_checked = row[field_checked_fieldname]? 1:0;
}
field_checked = field_checked && field_checked != '0'? ' checked="checked"' : '';
}
//This is where I was trying to see if this is a var or object, and if it is empty. No luck.
if(jQuery.isEmptyObject(field_hidden))
{
return '<input type="checkbox"' + field_name + htmlEncode(field_value) + field_checked+' >';
}
else
{
return '<input type="checkbox"' + field_name + htmlEncode(field_value) + field_checked+' hidden >';
}
}
}
},
感谢上面Barmar的提示,我能够从字段构造函数中提取我想要的值。
使用已经在这个函数中构建的代码,我能够创建我自己的条件来获得我传递的hidden
值。
var re = /^{(.+)}$/;
if(typeof(field_hidden) !== 'undefined' && field_hidden !== null) {
var match = field_hidden.match(re);
if(match) {
var field_hidden_fieldname = match[1];
field_hidden = row[field_hidden_fieldname];
}
field_hidden = ' field ="' + field_hidden + '"';
console.log("This is the field_hidden after decoding",field_hidden);
}
PSA:一些用户正在使用他们没有编写的代码库,并且没有时间从头开始构建。