Javascript 为什么';在InDesign中捕获MacOS上输入的每个按键?

Javascript 为什么';在InDesign中捕获MacOS上输入的每个按键?,javascript,ractivejs,adobe-indesign,Javascript,Ractivejs,Adobe Indesign,我有一个html输入我有两种方式与Ractive绑定: <input type="password" value="{{password}}"> 此计算值用于(取消)激活按钮: <div {{#if validPassword}} <button type="button" on-click="connect">connect</button> {{else}} <button type="button" disa

我有一个html输入我有两种方式与Ractive绑定:

<input type="password" value="{{password}}">
此计算值用于(取消)激活按钮:

<div
    {{#if validPassword}}
    <button type="button" on-click="connect">connect</button>
    {{else}}
    <button type="button" disabled="disabled">connect</button>
    {{/if}}
</div>

这一定是InDesign嵌入式chromium中的一个bug

无论如何,正如Rich Harris所建议的,有效的解决方案是以下解决方案,其建议的基本路线如下:

<input type="password" value="{{password}}" on-keydown-input-change='set("password",event.node.value)'>

Mac OS上的InDesign引擎似乎不理解在
输入
标记中使用
属性进行双向绑定。您必须使用
on keydown input change
属性,并在Ractive中手动设置值,以将值从HTML绑定到JS


编辑:您甚至可以使用一个简单的on-keydown输入属性(删除更改)。这就成功了。

您在哪些浏览器上尝试过?Chrome/Safari上的行为相同吗?这有点特别。我在AdobeInDesign的嵌入式chromium引擎v8中进行了测试,发现了这个问题。同时,我刚刚在firefox、chrome和safari中进行了测试,效果很好。可能是InDesign chromium引擎中的错误?听起来像是InDesign中的错误(可能是非常旧的chromium)。一种可能的解决方法是侦听DOM事件并手动更新值,而不是使用双向绑定:@richarris这很有意义,而且工作正常。只是一个问题:按键输入更改的属性
从何而来?我在HTML规范和Ractive规范中都没有看到它。在Ractive中,您可以在-[event]
指令上创建一个
on,该指令在节点上设置事件侦听
on keydown输入change='…'
只是
on keydown='…'on输入='…'on更改='…'的缩写。
<input type="password" value="{{password}}" on-keydown-input-change='set("password",event.node.value)'>