Простите меня, если это просто - я был вдали от компьютеров и JS в течение месяца, поэтому эта задача кажется мне невыполнимой, где я знаю, что она не должна быть.
Самый быстрый способ, который я могу придумать, это поместить это в код, используя комментарии, чтобы объяснить, как это работает. Я укажу в этих комментариях, что является частью, которую я не могу понять.
У меня есть текстовое поле, оформленное так, чтобы оно выглядело нередактируемым, с кнопкой «редактировать» рядом с ним, которая при нажатии превращается в кнопку «сохранить» и делает текстовое поле редактируемым.
$(".edit_btn").click(function() {
// make the associated text field look editable, and change this 'edit'
// button into a 'save' button. Then place focus on the text in
// in the field.
});
$(".save_btn").click(function() {
// if (value in associated text field has changed from when page loaded)
// submit the form and save this new text
// else
// revert to non-editable mode (hide this 'save' button,
// and show 'edit' button)
});
Все это работает нормально. Однако, если пользователь покидает редактируемое текстовое поле, я хочу иметь возможность определить, покинули ли они поле, чтобы нажать кнопку «Сохранить», или просто щелкнули где-нибудь еще на странице. Поэтому в обработчике событий «размытие» для поля мне нужно знать, нажал ли я кнопку «Сохранить». Для жизни я не могу понять, как это сделать:
$('input[name^="tgfld_"]').blur(function() {
// if (save button has been clicked) <- this is the problem
// don't do anything since the save function will handle this
// else if (value in the field hasn't changed)
// revert everything back to non-editable mode
// else if (value in the field HAS changed)
// do a window.confirm and prompt the user to click the 'save'
// button to save their changes
});
Таким образом, он определяет, была ли кнопка сохранения причиной срабатывания «размытия» - вот что я не могу понять.
Или, если это совершенно неправильный способ справиться с ситуацией, пожалуйста, дайте мне знать.
(Я должен отметить, что на странице может быть много таких комбинаций полей/кнопок, но пока это ни на что не влияет.)