【问题标题】:Understanding when an input box has bean cleared and new input inserted了解输入框何时清除 bean 并插入新输入
【发布时间】:2016-11-22 11:47:56
【问题描述】:

我正在使用 jQuery 自动完成,多个输入框相互连接,即当在第一个输入框中插入一些值并失去焦点时,以下输入框会受到影响(即相应地过滤值)。然后我可以专注于另一个输入框并开始输入一些值,这样我就可以应用两个过滤器(输入的值并根据之前的输入框值)。

另外,我设置了一个事件,用于在从输入框中删除所有字符时清除所有输入框:

if (inputBoxTrigger.val().length == 0 && (event.keyCode == BACKSPACE || event.keyCode == DELETE)) {
        jQuery.each(inputObjectArray, function (i, obj) {
            obj.val("");
        });
    }

所以,当我刚刚删除当前输入框中的最后一个字符时,我会清理所有内容。但是,我可以执行以下操作: 1) 选择输入框的内容(例如通过鼠标或按住 shift) 2) 开始在此输入框中输入内容,无需按退格键或删除按钮

在这种情况下,输入框被清除并插入一个新字符,但我没有捕捉到这种情况。 我试图取消对退格/删除按钮keyCode的检查,但不起作用:离开输入框时,新输入框为空,所以我只是清理所有内容(包括以前的输入框)。

有什么想法吗?

【问题讨论】:

  • 你不能只检测正在使用的输入框中的字符数的变化,如果它下降,你有你的情况将它们全部清除吗?
  • 你的意思是当文本长度下降到1时,我可以清除所有内容?那是不可行的:我会拼错一些东西,例如hhome 而不是 home,只是回去删除我的第二个 h;当从“hh”传递到“h”时,我会触发事件,这不是我想要的。在用新字符替换整个输入文本时,我只需要这样做。
  • 我不明白为什么当您从“hhome”转到“h”与从例如“whatsup”到“h”(通过选择并键入 h)。但是,如果这是您真正想要的,我怀疑您可能必须检测是否选择了字符,然后检测是否选择了所有字符以及字符数是否变为 1。还可以检测字符数是否为 1 并检查是否存在是否是退格键(如果退格键你有“hhome”的情况,如果不是,你有“whatsup”的情况)
  • 如果有人选择所有内容并粘贴某些内容,这将失败(我假设)

标签: javascript jquery


【解决方案1】:

也许是一种更复杂的算法来检测字符串相似度?

如果字符串非常相似,那么它可能是一个简单的更正,如果不是,那么它可能是一个完全不同的项目,您可以重置表单。您还可以将长度/方向比较与相似性比较链接以对其进行微调(即,仅在从一个长字符串到另一个长字符串时进行相似性比较,...)。

关于字符串相似度:

Compare Strings Javascript Return %of Likely

javascript text similarity Algorithm

http://andrew.hedges.name/experiments/levenshtein/

【讨论】:

  • 这似乎是一个很好的解决方案,但对我来说,与 2 或 1 个字符的字符串相似性似乎过于复杂。我希望某种事件能够拦截......
猜你喜欢
  • 2013-06-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多