我正在使用PDF设计表单并使用JavaScript验证用户输入,并根据用户选择在文档上显示不同的标签。请参阅下面的示例代码:
var countryofgrowth = this.getField("countryofgrowth").value;
var countryofgrowth = this.getField("sugarquality").value;
var countryofgrowth = this.getField("sugarQualitylevelhigh").value;
var countryofgrowth = this.getField("cornquantitymax").value;
var countryofgrowth = this.getField("cornquantity").value;
var type = this.getField("type").value;
if ((type == "sugar") && (countryofgrowth == "Afghanistan [AF]" || countryofgrowth == "Albania [AL]" || countryofgrowth == "Algeria [DZ]" || countryofgrowth == "Angola [AO]" || countryofgrowth == "Argentina [AR]" || ……) )
{
getField("sugarlabel").display=display.visible;
getField("goodsugar").display=display.hidden;
getField("sugarQualitylevellow").display=display.hidden;
getField("sugarQualitylevelhigh").display=display.hidden;
getField("sugarQualitylevelhighmorethan75").display=display.hidden;
getField("sugarQualitylevelhighlessthan75").display=display.hidden;
getField("cornquantity").display=display.hidden;
getField("cornquantitymorethan500").display=display.hidden;
getField("cornquantitymax").display=display.hidden;
getField("cornquantitymaxyes").display=display.hidden;
getField("cornquantitymaxno").display=display.hidden;
}
else if ((type == "sugar") && (countryofgrowth == "Australia [AU]" || countryofgrowth == "Belgium [BE]" || countryofgrowth == "Canada [CA]" || countryofgrowth == "Czech Republic [CZ]" || countryofgrowth == "Denmark [DK]" || …..))
{
getField("sugarlabel").display=display.hidden;
getField("sugarquality").display=display.visible;
getField("sugarQualitylevellow").display=display.hidden;
getField("sugarQualitylevelhigh").display=display.hidden;
getField("sugarQualitylevelhighmorethan75").display=display.hidden;
getField("sugarQualitylevelhighlessthan75").display=display.hidden;
getField("cornquantity").display=display.hidden;
getField("cornquantitymorethan500").display=display.hidden;
getField("cornquantitymax").display=display.hidden;
getField("cornquantitymaxyes").display=display.hidden;
getField("cornquantitymaxno").display=display.hidden;
if (sugarquality == "Low Quality")
{
getField("sugarlabel").display=display.hidden;
getField("sugarquality").display=display.visible;
getField("sugarQualitylevellow").display=display.visible;
getField("sugarQualitylevelhigh").display=display.hidden;
getField("sugarQualitylevelhighmorethan75").display=display.hidden;
getField("sugarQualitylevelhighlessthan75").display=display.hidden;
getField("cornquantity").display=display.hidden;
getField("cornquantitymorethan500").display=display.hidden;
getField("cornquantitymax").display=display.hidden;
getField("cornquantitymaxyes").display=display.hidden;
getField("cornquantitymaxno").display=display.hidden;
}
else if (sugarquality == "High Quality")
{
getField("sugarlabel").display=display.hidden;
getField("sugarquality").display=display.visible;
getField("sugarQualitylevellow").display=display.hidden;
getField("sugarQualitylevelhigh").display=display.visible;
getField("sugarQualitylevelhighmorethan75").display=display.hidden;
getField("sugarQualitylevelhighlessthan75").display=display.hidden;
getField("cornquantity").display=display.hidden;
getField("cornquantitymorethan500").display=display.hidden;
getField("cornquantitymax").display=display.hidden;
getField("cornquantitymaxyes").display=display.hidden;
getField("cornquantitymaxno").display=display.hidden;
if (sugarQualitylevelhigh == " More than 75%")
{
getField("sugarlabel").display=display.hidden;
getField("sugarquality").display=display.visible;
getField("sugarQualitylevellow").display=display.hidden;
getField("sugarQualitylevelhigh").display=display.visible;
getField("sugarQualitylevelhighmorethan75").display=display.visible;
getField("sugarQualitylevelhighlessthan75").display=display.hidden;
getField("cornquantity").display=display.hidden;
getField("cornquantitymorethan500").display=display.hidden;
getField("cornquantitymax").display=display.hidden;
getField("cornquantitymaxyes").display=display.hidden;
getField("cornquantitymaxno").display=display.hidden;
}
else if (sugarQualitylevelhigh == "Less than 75%")
{
getField("sugarlabel").display=display.hidden;
getField("sugarquality").display=display.visible;
getField("sugarQualitylevellow").display=display.hidden;
getField("sugarQualitylevelhigh").display=display.visible;
getField("sugarQualitylevelhighmorethan75").display=display.hidden;
getField("sugarQualitylevelhighlessthan75").display=display.visible;
getField("cornquantity").display=display.hidden;
getField("cornquantitymorethan500").display=display.hidden;
getField("cornquantitymax").display=display.hidden;
getField("cornquantitymaxyes").display=display.hidden;
getField("cornquantitymaxno").display=display.hidden;
}
}
}
else if ((type == "Corn") && (countryofgrowth == "Aland Islands [AX]" || countryofgrowth == "Alderney" || countryofgrowth == "American Samoa [AS]" || countryofgrowth == "Andorra [AD]" || countryofgrowth == "Anguilla [AI]" || countryofgrowth == "Antarctica [AQ]" || ……))
{
getField("sugarlabel").display=display.hidden;
getField("sugarquality").display=display.hidden;
getField("sugarQualitylevellow").display=display.hidden;
getField("sugarQualitylevelhigh").display=display.hidden;
getField("sugarQualitylevelhighmorethan75").display=display.hidden;
getField("sugarQualitylevelhighlessthan75").display=display.hidden;
getField("cornquantity").display=display.visible;
getField("cornquantitymorethan500").display=display.hidden;
getField("cornquantitymax").display=display.hidden;
getField("cornquantitymaxyes").display=display.hidden;
getField("cornquantitymaxno").display=display.hidden;
if (cornquantity == "More than 500t")
{
getField("sugarlabel").display=display.hidden;
getField("sugarquality").display=display.hidden;
getField("sugarQualitylevellow").display=display.hidden;
getField("sugarQualitylevelhigh").display=display.hidden;
getField("sugarQualitylevelhighmorethan75").display=display.hidden;
getField("sugarQualitylevelhighlessthan75").display=display.hidden;
getField("cornquantity").display=display.visible;
getField("cornquantitymorethan500").display=display.visible;
getField("cornquantitymax").display=display.hidden;
getField("cornquantitymaxyes").display=display.hidden;
getField("cornquantitymaxno").display=display.hidden;
}
else if (cornquantity == "More than 1000t")
{
getField("sugarlabel").display=display.hidden;
getField("sugarquality").display=display.hidden;
getField("sugarQualitylevellow").display=display.hidden;
getField("sugarQualitylevelhigh").display=display.hidden;
getField("sugarQualitylevelhighmorethan75").display=display.hidden;
getField("sugarQualitylevelhighlessthan75").display=display.hidden;
getField("cornquantity").display=display.visible;
getField("cornquantitymorethan500").display=display.hidden;
getField("cornquantitymax").display=display.visible;
getField("cornquantitymaxyes").display=display.hidden;
getField("cornquantitymaxno").display=display.hidden;
if (cornquantitymax == "Yes")
{
getField("sugarlabel").display=display.hidden;
getField("sugarquality").display=display.hidden;
getField("sugarQualitylevellow").display=display.hidden;
getField("sugarQualitylevelhigh").display=display.hidden;
getField("sugarQualitylevelhighmorethan75").display=display.hidden;
getField("sugarQualitylevelhighlessthan75").display=display.hidden;
getField("cornquantity").display=display.visible;
getField("cornquantitymorethan500").display=display.hidden;
getField("cornquantitymax").display=display.visible;
getField("cornquantitymaxyes").display=display.visible;
getField("cornquantitymaxno").display=display.hidden;
}
else if (cornquantitymax == "No")
{
getField("sugarlabel").display=display.hidden;
getField("sugarquality").display=display.hidden;
getField("sugarQualitylevellow").display=display.hidden;
getField("sugarQualitylevelhigh").display=display.hidden;
getField("sugarQualitylevelhighmorethan75").display=display.hidden;
getField("sugarQualitylevelhighlessthan75").display=display.hidden;
getField("cornquantity").display=display.visible;
getField("cornquantitymorethan500").display=display.hidden;
getField("cornquantitymax").display=display.visible;
getField("cornquantitymaxyes").display=display.hidden;
getField("cornquantitymaxno").display=display.visible;
}
}
}
我目前的问题是每个||
- 都有20到90个国家/地区。目前我有4组不同的国家。我的问题是有没有办法在4个不同的变量中分组或声明所有这些国家/地区,然后在需要时调用单个变量?
我希望的结果会是这样的,但是我不完全确定如何完成,下面的代码不起作用,只是为了说明目的以反映所需的结果:
var countryofgrowth = this.getField("countryofgrowth").value;
var countryofgrowth = this.getField("sugarquality").value;
var countryofgrowth = this.getField("sugarQualitylevelhigh").value;
var countryofgrowth = this.getField("cornquantitymax").value;
var countryofgrowth = this.getField("cornquantity").value;
var type = this.getField("type").value;
var Highriskcountries = ["Afghanistan [AF]", "Albania [AL]", "Algeria [DZ]", "Angola [AO]", "Argentina [AR]", .....];
var Lowriskcountries = ["Australia [AU]", "Belgium [BE]", "Canada [CA]", "Czech Republic [CZ]", "Denmark [DK]", .....];
var Mediumriskcountries = ["Aland Islands [AX]", "Alderney", "American Samoa [AS]", "Andorra [AD]", "Anguilla [AI]", "Antarctica [AQ]", .....];
var Acceptablecountries = ["Aland Islands [AX]", "Alderney", "American Samoa [AS]", "Andorra [AD]", "Anguilla [AI]", "Antarctica [AQ]", "Australia [AU]", "Belgium [BE]", "Canada [CA]", "Czech Republic [CZ]", "Denmark [DK]", .....];
if ((type == "sugar") && (countryofgrowth == Highriskcountries))
{
getField("sugarlabel").display=display.visible;
getField("goodsugar").display=display.hidden;
getField("sugarQualitylevellow").display=display.hidden;
getField("sugarQualitylevelhigh").display=display.hidden;
getField("sugarQualitylevelhighmorethan75").display=display.hidden;
getField("sugarQualitylevelhighlessthan75").display=display.hidden;
getField("cornquantity").display=display.hidden;
getField("cornquantitymorethan500").display=display.hidden;
getField("cornquantitymax").display=display.hidden;
getField("cornquantitymaxyes").display=display.hidden;
getField("cornquantitymaxno").display=display.hidden;
}
else if ((type == "sugar") && (countryofgrowth == Lowriskcountries))
{
getField("sugarlabel").display=display.hidden;
getField("sugarquality").display=display.visible;
getField("sugarQualitylevellow").display=display.hidden;
getField("sugarQualitylevelhigh").display=display.hidden;
getField("sugarQualitylevelhighmorethan75").display=display.hidden;
getField("sugarQualitylevelhighlessthan75").display=display.hidden;
getField("cornquantity").display=display.hidden;
getField("cornquantitymorethan500").display=display.hidden;
getField("cornquantitymax").display=display.hidden;
getField("cornquantitymaxyes").display=display.hidden;
getField("cornquantitymaxno").display=display.hidden;
}
此处还有我用来询问用户初始问题的下拉字段,具体取决于他们的答案,其他下拉字段将变为可见。
下面是我目前保留代码的文本字段,正如我在下面的评论中所说的,我的所有代码目前工作正常,但由于代码大小限制,每个文本字段都可以保存,我不得不拆分3个文本字段之间的代码,但是我遇到了问题,我无法拆分一些深层嵌套的if...else
语句,因此我要求通过对国家进行分组来缩小我的代码。
答案 0 :(得分:0)
这样的事情怎么样?它可能需要一些调整,我还没有经过测试,但基本上你想要创建一个数据结构,这将允许你以相同的方式一般地处理每个场景。
在这里使用对象作为地图而不是数组来保存国家只是一种优化,可以使国家查找更快,但可能没有必要。
var fieldKeys = ['sugar', 'corn', 'wheet', 'potatoes'];
var fields = fieldKeys.reduce(function (res, type) {
res[type] = getField(type + 'label');
return res;
}, {});
var countriesByType = {
sugar: {
'Afghanistan': true,
'Albania': true
},
corn: {
'Australia': true,
'Belgium': true
}
};
updateFieldsVisibility({ type: 'corn', country: 'Albania' });
function updateFieldsVisibility(selection) {
var countries = countriesByType[selection.type];
hideOtherTypeFields();
fields[selection.type].display = display[countries[selection.country]? 'visible' : 'hidden'];
function hideOtherTypeFields() {
fieldKeys
.filter(function (field) {
return field != selection.type;
})
.forEach(function (field) {
fields[field].display = display.hidden;
});
}
}
正如你所看到的糖和小麦&玉米和土豆我也一样 国家的序列,所以我希望以某种方式将它们分组 阻止我一次又一次地重复它们
您可以执行以下操作并使用与上述相同的方法:
var sugarAndWheatCountries = {
'Afghanistan': true,
'Albania': true,
...
};
var cornAndPotatoesCountries = {
'Australia': true,
'Belgium': true,
...
};
var countriesByType = {
sugar: sugarAndWheatCountries,
wheat: sugarAndWheatCountries,
corn: cornAndPotatoesCountries,
potatoes: cornAndPotatoesCountries
};
要使代码更小,您可以从数组动态创建地图:
var sugarAndWheatCountries = mapFromStringArray(['Afghanistan', 'Albania', ...]);
function mapFromStringArray(arr) {
return arr.reduce(function (acc, str) {
acc[str] = true;
return acc;
}, {});
}