Javascript:当输入字段失去焦点时触发的更改事件

Javascript:当输入字段失去焦点时触发的更改事件,javascript,focus,Javascript,Focus,我的页面上有输入字段,我检测用户何时键入某些内容以启用“保存”按钮。我还启用了快捷键Ctrl+S,让用户保存。保存任何数据时,“保存”按钮将被禁用 然而,我有一个两难的选择。如果用户更改输入字段中的文本,按Ctrl+S组合键,然后使用鼠标移动到另一个输入字段,则会为用户更改的输入字段触发“更改”事件,从而导致再次启用“保存”按钮。不应启用“保存”按钮,因为在执行Ctrl+S后未发生任何更改。显示的是,change事件不仅在文本更改时触发,而且在焦点移动到另一个字段时也会触发 $("input.S

我的页面上有输入字段,我检测用户何时键入某些内容以启用“保存”按钮。我还启用了快捷键Ctrl+S,让用户保存。保存任何数据时,“保存”按钮将被禁用

然而,我有一个两难的选择。如果用户更改输入字段中的文本,按Ctrl+S组合键,然后使用鼠标移动到另一个输入字段,则会为用户更改的输入字段触发“更改”事件,从而导致再次启用“保存”按钮。不应启用“保存”按钮,因为在执行Ctrl+S后未发生任何更改。显示的是,
change
事件不仅在文本更改时触发,而且在焦点移动到另一个字段时也会触发

$("input.SaveMe").live('keypress change', function ()
{
    // Code goes here to enable Save button
});

如何防止保存后发生更改事件。我曾想过使用某种标志,但我不知道如何使用。

当特定输入未处于焦点时,可以按以下方式忽略事件

$("input.SaveMe").live('keypress change', function() {
    if (!$(document.activeElement).id == 'id_of_input') return; //if (!$(document.activeElement).hasClass('SaveMe')) return;
    // Code goes here to enable Save button
});

删除对“更改”的检测可以解决这个问题,但这现在可以防止用户将文本粘贴到字段中并将粘贴检测为更改。要解决此问题,请执行以下操作:

$(document).bind('paste', function (e)
{
  // Add code to update flag to indicate data changes and enable the Save button.
});

“SaveMe”不是ID。它是一个类名。@DarkXphenomenon类是
className
。只有在只有一个类的情况下,你的代码才能工作:)@FlorianMargaine lol你做了与我即将按下Submit完全相同的编辑用户可以将焦点从一个字段移动到另一个字段,并且两个字段都有“SaveMe”类。您的代码假设用户移动到没有该类的对象,因此您的代码不正确。OP可以使用id属性。我在该声明旁边添加了这一点作为评论。