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

时间:2012-07-19 12:36:50

标签: javascript focus

我的页面上有输入字段,我检测用户何时键入内容以启用“保存”按钮。我还启用了一个快捷键 Ctrl + S 来让用户保存。无论何时保存数据,都会禁用“保存”按钮。

然而,我有一个两难的境地。如果用户更改输入字段中的文本,执行 Ctrl + S 然后使用鼠标移动到另一个输入字段,则会触发“更改”事件用户更改的输入字段,这又会导致“保存”按钮再次启用。不应启用“保存”按钮,因为在执行 Ctrl + S 后未进行任何更改。它看起来是change事件不仅会在文本更改时触发,而且还会在焦点移动到另一个字段时触发。

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

如何在保存后阻止更改事件发生。我想过使用某种旗帜,但我无法弄清楚如何。

2 个答案:

答案 0 :(得分:2)

您可以通过以下方式忽略特定输入未聚焦时的事件。

$("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
});

答案 1 :(得分:-1)

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

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