Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/439.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在meteor中保留禁用的输入_Javascript_Web Applications_Data Binding_Meteor_Sync - Fatal编程技术网

Javascript 在meteor中保留禁用的输入

Javascript 在meteor中保留禁用的输入,javascript,web-applications,data-binding,meteor,sync,Javascript,Web Applications,Data Binding,Meteor,Sync,我目前正在中设计一个用户界面,其中包含多个文本输入,其内容在更改时保存到会话变量(keyupevent)。由于preserve inputs包,这些输入框在聚焦时不会重新渲染 现在,我已经尝试在默认情况下禁用这些输入框,并使它们在双击时可编辑(这可能是一个错误的选择,但这是解决当前问题的最简单方法,对于初稿来说已经足够了——也许我稍后会在UX上询问)。但是,当最初禁用时,输入框不会保留并在输入单个字符时重新呈现,从而再次禁用 虽然保留不可编辑的元素不被重新渲染通常是没有意义的,但我在代码中找不到

我目前正在中设计一个用户界面,其中包含多个文本输入,其内容在更改时保存到会话变量(
keyup
event)。由于
preserve inputs
包,这些输入框在聚焦时不会重新渲染

现在,我已经尝试在默认情况下禁用这些输入框,并使它们在双击时可编辑(这可能是一个错误的选择,但这是解决当前问题的最简单方法,对于初稿来说已经足够了——也许我稍后会在UX上询问)。但是,当最初禁用时,输入框不会保留并在输入单个字符时重新呈现,从而再次禁用

虽然保留不可编辑的元素不被重新渲染通常是没有意义的,但我在代码中找不到任何区别
禁用状态的东西。那么它在哪里,我怎样才能绕过它呢?(当然,我可以在双击/模糊时设置一个
禁用的
会话变量,并在启用状态下重新渲染输入框,但这对我来说太复杂了)

下面的代码(请注意,它是纯客户端JavaScript)再现了这个问题。它还呈现第二个输入框,该输入框从不被禁用,但也只能在双击后访问。这可以按预期工作,无需重新渲染。现场演示已部署到

已禁用。html

<head>
  <title>disabled</title>
</head>
<body>
  {{> body}}
</body>

<template name="body">
  <p>Double-click to enter text</p>
  {{> input f}}
  {{> input t}}
</template>

<template name="input">
  <div style="position: relative; width: 400px;">
    <input id="{{id}}" class="input" type="text" value="{{value}}" style="width: 100%;" {{disabled}}/>
    <!-- events on disabled inputs are not triggered -->
    <!-- overlay with transparent div to catch clicks -->
    <div class="catch" style="position: absolute; left: 0; top: 0; right: 0; bottom: 0;" />
  </div>
</template>

对我来说,唯一的工作选项是定义disabled=“true”,因此代码如下所示:

disabled="{{#if isDisabled}}true{{/if}}"

如果isDisabled为false,Meteor甚至不会在DOM中呈现/显示禁用的标记(例如disabled=“”)。

对于我来说,唯一的工作选项是定义disabled=“true”,因此代码如下所示:

disabled="{{#if isDisabled}}true{{/if}}"

如果isDisabled为false,Meteor甚至不会在DOM中呈现/显示禁用的标记(例如disabled=“”)。

首先将
输入设置为禁用可以实现什么?特别是如果双击它是可编辑的。也许您不需要添加
disabled=“disabled”
属性,只需添加
class=“appeage disabled”
并将其设置为禁用,然后双击它,在禁用和激活之间切换。@GeoffreyBooth我想我无论如何都会这样做;这只是一个速写稿。尽管如此,我还是很好奇为什么它会这样,即使它不会破坏应用程序。但是,哦,好吧。首先将
输入设置为禁用是什么效果?特别是如果双击它是可编辑的。也许您不需要添加
disabled=“disabled”
属性,只需添加
class=“appeage disabled”
并将其设置为禁用,然后双击它,在禁用和激活之间切换。@GeoffreyBooth我想我无论如何都会这样做;这只是一个速写稿。尽管如此,我还是很好奇为什么它会这样,即使它不会破坏应用程序。但是,哦,好吧。