2017-08-28 28 views
0

使用验证功能处理组合框选择,我可以获取当前选定项目的值,但项目的索引始终是上一个选择的索引:Acrobat Pro DC组合框 - 当前选择与其索引不匹配

var combo = this.getField("combo"); 
var options = [ 
    [ "Option a" , 4 ], 
    [ "Option b" , 8 ], 
    [ "Option c" , 15 ], 
    [ "Option d" , 16 ], 
    [ "Option e" , 23 ], 
    [ "Option f" , 42 ] 
] 

combo.setItems(options) 

combo.setAction("Validate", "someFunc(event)") 

function someFunc(e){ 
    console.println(e.value)     // Option c 
    console.println(combo.currentValueIndices) // 0 
} 

我期待的结果是:

// option c 
// 2 

这是怎么回事?

回答

0

将您的代码从函数中取出并放入自定义K​​eyStroke脚本中,然后使用e.changeEx代替e.value。

enter image description here

+0

谢谢乔尔,我敢肯定这会工作,但我想我所有的代码在一个文件中,如果可能的话,不使用属性窗口。 – gatzkerob

0

在这种情况下,使用的东西链接此...

combo.setAction("Keystroke", "console.println(event.changeEx);console.println(this.getField('combo').currentValueIndices")) 
+0

'currentValueIndices'仍然显示组合框中先前选择的项目的索引 – gatzkerob

0

问题解决了。我改变:

combo.setAction("Validate", "someFunc(event)") 

到:

combo.setAction("Format", "someFunc(event)") 

,我现在得到正确的currentValueIndices

+0

这是因为格式脚本是最后一次运行,它发生在字段值更新后。在验证事件期间,值尚未更改。只有验证是好的(真)才会改变。在按键事件中,changeEx属性是新值。当前的价值目录也没有改变。 – joelgeraci

相关问题