【问题标题】:Using JQuery, how do you detect if the value of a text input has changed while the field still has focus?使用 JQuery,您如何检测文本输入的值是否已更改而字段仍具有焦点?
【发布时间】:2009-10-08 17:22:50
【问题描述】:

在发布此问题之前,我注意到之前在此主题上发布过类似的问题,但是在这种情况下,用户没有通过使用键盘与文本字段进行交互,在这种情况下,将文本字段绑定到在我的情况下,“粘贴”操作或任何其他漂亮的建议都行不通。

我们的用户正在输入一个从条形码扫描进来的字符串值。我们试图做的是避免用户在扫描信息后放下扫描仪进入下一个字段的烦恼。但是,当文本字段仍有焦点时,我在检测文本字段值的变化时遇到了问题。

这是我们唯一缺少的难题,因为将焦点应用到表单上的下一个字段是微不足道的。当输入设备不是键盘时,任何人都可以阐明如何检测文本字段值的变化吗?我已经尝试过使用 change() 事件,但在该字段不再具有焦点之前它不会触发。

【问题讨论】:

  • 如果您要打印自己的条形码,可以尝试将 TAB 字符放在代码末尾,我在 VB.net 中是这样工作的。

标签: jquery events textbox


【解决方案1】:

您可以只监听keypress 事件。

<input type="text" id="target" value="" />

var target = $('#target'),
    val = target.val();

function monitor()
{
    var current_val = $(this).val();
    if (current_val != val) {
        console.log('changed from', val, 'to', current_val);
        val = current_val;
    }
}

target.keypress(monitor);

【讨论】:

  • 按键工作完美。出于某种原因,我在回调函数中有代码导致输入被切断。谢谢!!!
  • 用鼠标插入值,或以编程方式更改值或表单自动填充功能怎么样?只有致命的民意调查?
  • 实际上在这个实例中使用的正确事件是 .keyup() 因为你想在输入值之后更新,而不是之前。使用 .keypress() 将导致丢失最后输入的字符。
【解决方案2】:

好吧,总是有蛮力:用setInterval() 投票。

【讨论】:

    猜你喜欢
    • 2017-12-17
    • 1970-01-01
    • 2010-11-01
    • 2021-02-27
    • 1970-01-01
    • 1970-01-01
    • 2020-11-14
    • 2018-02-16
    相关资源
    最近更新 更多