我正在使用以下网络应用ESRI GeoForm,并尝试对其进行自定义以进行连接。它是我们组织内部的私人形式。所以我不能通过视频或图像分享我正在使用的表格。
所以基本上,当用户输入“地址编号”和“地址前缀”以及“地址”中的其他部分时,我想在“完整地址”和“全名”字段中连接这些条目。
所有这些字段都是必需的,但我绝对不会要求用户多次进行双输入。 SO ...
这是一个基于ESRI的Javascript API构建的Dojo应用程序。我很喜欢编辑小的Javascript脚本,而且几年前我已经构建了相当强大的脚本,但是我有点迷失在这样一个复杂而冗长的应用程序中。幸运的是,我刚刚让GIT Hub组中的一些开发人员进行了类似的更改,以添加“锁定”表单字段的功能。我被告知我可以模仿他们为字段的锁定功能添加为字段添加连接功能。所以......我走了。
我的第一步是转到添加的字段的JSON。此JSON位于default.js文件中。我决定利用我认为的Array对象作为属性选项。因此,例如,在JSON中构建表单并从数据库中选择需要哪些字段以及如何在表单上放置它们时,您可以创建这些字段属性。要为其中一个字段创建默认值,您可以创建如下属性:
... “defaultValue”:“true” ...
我为连接选项所做的是使用如下条目:
... “concantenated”:[“FIELD_ONE”,“ space ”,“FIELD_TWO”,“ space ”,...], ...
我的想法是每个HTML表单字段都标识有一个等于实际字段名称的ID。像这样......
<input type="text" class="form-control" data-input-type="String" maxlength="20" id="ADDRNUM" placeholder="175" data-display-type="text">
该字段填充数据库字段ADDRNUM,并使用该字段名称作为ID。所以在我的concatenator属性中,当我提供字段名称列表时,我可以通过ID指向那些HTML表单字段。
这种方式......可以告诉它以某种方式连接,也许是这样的?
('ADDRNUM')。keyup(function(){('FULLADDR')。val(this.value);}
我遇到的问题是我不确定在main.js文件中我需要添加连接过程/方法/函数?
如果我按照用于integrate a 'Locked' option that was just added a day ago的系统...那么我需要复制“ disabled:!! currentField.locked ”,其中包含 concantenated:! !currentField.concatenator 但我对于在何处/如何集成连接方法感到很遗憾。
更新(10APR18): 所以我开始调整[form folder]/js/main.js下的代码来测试并使用它。我从772号线开始。
if (!!currentField.concantenated) {
domClass.add(formContent, "concantenated");
array.forEach(currentField.concantenated, function(entry, i){
console.log(JSON.stringify(entry, null, 4));
console.log( currentField );
if(entry !== "_space_" || "_comma_")
{
console.log( "It is not _space_ nor _comma_ but rather " + entry );
concatField = dom.byId(entry.stringify);
console.log( concatField );
testField = dom.byId('ADDRNUM');
console.log( testField );
test = on(concatField, 'click', 'foo');
console.log( entry + " was just updated with foo");
}
});
}
这通过console.log给了我一些很好的反馈,我发现我需要引用的字段尚未创建。现在我可以将字段移动到[form folder]/config/default.js
中JSON列表的底部