diff --git a/src/public/javascripts/desktop.js b/src/public/javascripts/desktop.js
index 3b4ad63b3..4af63e07d 100644
--- a/src/public/javascripts/desktop.js
+++ b/src/public/javascripts/desktop.js
@@ -96,7 +96,7 @@ $("#logout-button").on('click', () => {
.append($(``));
$("body").append($logoutForm);
- $logoutForm.submit();
+ $logoutForm.trigger('submit');
});
$("#tree").on("click", ".unhoist-button", hoistedNoteService.unhoist);
diff --git a/src/public/javascripts/dialogs/add_link.js b/src/public/javascripts/dialogs/add_link.js
index 76f7d7436..be8e8f244 100644
--- a/src/public/javascripts/dialogs/add_link.js
+++ b/src/public/javascripts/dialogs/add_link.js
@@ -19,7 +19,7 @@ export async function showDialog() {
$dialog.modal();
- $autoComplete.val('').focus();
+ $autoComplete.val('').trigger('focus');
$linkTitle.val('');
async function setDefaultLinkTitle(noteId) {
@@ -51,7 +51,7 @@ export async function showDialog() {
noteAutocompleteService.showRecentNotes($autoComplete);
}
-$form.submit(() => {
+$form.on('submit', () => {
const notePath = $autoComplete.getSelectedPath();
if (notePath) {
diff --git a/src/public/javascripts/dialogs/attributes.js b/src/public/javascripts/dialogs/attributes.js
index d373f4903..718337dbc 100644
--- a/src/public/javascripts/dialogs/attributes.js
+++ b/src/public/javascripts/dialogs/attributes.js
@@ -99,7 +99,7 @@ function AttributesModel() {
await showAttributes(attributes);
// attribute might not be rendered immediatelly so could not focus
- setTimeout(() => $(".attribute-type-select:last").focus(), 1000);
+ setTimeout(() => $(".attribute-type-select:last").trigger('focus'), 1000);
};
this.deleteAttribute = function(data, event) {
@@ -129,7 +129,7 @@ function AttributesModel() {
// we need to defocus from input (in case of enter-triggered save) because value is updated
// on blur event (because of conflict with jQuery UI Autocomplete). Without this, input would
// stay in focus, blur wouldn't be triggered and change wouldn't be updated in the viewmodel.
- $saveAttributesButton.focus();
+ $saveAttributesButton.trigger('focus');
if (!isValid()) {
alert("Please fix all validation errors and try saving again.");
diff --git a/src/public/javascripts/dialogs/branch_prefix.js b/src/public/javascripts/dialogs/branch_prefix.js
index 4d67e5123..443ae7c30 100644
--- a/src/public/javascripts/dialogs/branch_prefix.js
+++ b/src/public/javascripts/dialogs/branch_prefix.js
@@ -41,10 +41,10 @@ async function savePrefix() {
toastService.showMessage("Branch prefix has been saved.");
}
-$form.submit(() => {
+$form.on('submit', () => {
savePrefix();
return false;
});
-$dialog.on('shown.bs.modal', () => $treePrefixInput.focus());
\ No newline at end of file
+$dialog.on('shown.bs.modal', () => $treePrefixInput.trigger('focus'));
\ No newline at end of file
diff --git a/src/public/javascripts/dialogs/clone_to.js b/src/public/javascripts/dialogs/clone_to.js
index d17dbff74..9ca17bc2f 100644
--- a/src/public/javascripts/dialogs/clone_to.js
+++ b/src/public/javascripts/dialogs/clone_to.js
@@ -26,13 +26,13 @@ export async function showDialog(noteId) {
$dialog.modal();
- $noteAutoComplete.val('').focus();
+ $noteAutoComplete.val('').trigger('focus');
noteAutocompleteService.initNoteAutocomplete($noteAutoComplete);
noteAutocompleteService.showRecentNotes($noteAutoComplete);
}
-$form.submit(() => {
+$form.on('submit', () => {
const notePath = $noteAutoComplete.getSelectedPath();
if (notePath) {
diff --git a/src/public/javascripts/dialogs/confirm.js b/src/public/javascripts/dialogs/confirm.js
index 3739f9682..a2f9f5b0b 100644
--- a/src/public/javascripts/dialogs/confirm.js
+++ b/src/public/javascripts/dialogs/confirm.js
@@ -64,7 +64,7 @@ $dialog.on("hidden.bs.modal", () => {
}
if ($originallyFocused) {
- $originallyFocused.focus();
+ $originallyFocused.trigger('focus');
$originallyFocused = null;
}
});
diff --git a/src/public/javascripts/dialogs/export.js b/src/public/javascripts/dialogs/export.js
index bd5857f17..3e8eb396a 100644
--- a/src/public/javascripts/dialogs/export.js
+++ b/src/public/javascripts/dialogs/export.js
@@ -49,7 +49,7 @@ export async function showDialog(node, defaultType) {
$noteTitle.html(noteTitle);
}
-$form.submit(() => {
+$form.on('submit', () => {
$dialog.modal('hide');
const exportType = $dialog.find("input[name='export-type']:checked").val();
diff --git a/src/public/javascripts/dialogs/import.js b/src/public/javascripts/dialogs/import.js
index 684daea09..d527bd6fe 100644
--- a/src/public/javascripts/dialogs/import.js
+++ b/src/public/javascripts/dialogs/import.js
@@ -35,7 +35,7 @@ export async function showDialog(node) {
$dialog.modal();
}
-$form.submit(() => {
+$form.on('submit', () => {
// disabling so that import is not triggered again.
$importButton.attr("disabled", "disabled");
diff --git a/src/public/javascripts/dialogs/info.js b/src/public/javascripts/dialogs/info.js
index 74465d35b..b3901344b 100644
--- a/src/public/javascripts/dialogs/info.js
+++ b/src/public/javascripts/dialogs/info.js
@@ -29,7 +29,7 @@ $dialog.on("hidden.bs.modal", () => {
}
if ($originallyFocused) {
- $originallyFocused.focus();
+ $originallyFocused.trigger('focus');
$originallyFocused = null;
}
});
diff --git a/src/public/javascripts/dialogs/markdown_import.js b/src/public/javascripts/dialogs/markdown_import.js
index eb0791faa..56c78d879 100644
--- a/src/public/javascripts/dialogs/markdown_import.js
+++ b/src/public/javascripts/dialogs/markdown_import.js
@@ -51,6 +51,6 @@ async function sendForm() {
$importButton.on('click', sendForm);
-$dialog.on('shown.bs.modal', () => $importTextarea.focus());
+$dialog.on('shown.bs.modal', () => $importTextarea.trigger('focus'));
utils.bindElShortcut($dialog, 'ctrl+return', sendForm);
\ No newline at end of file
diff --git a/src/public/javascripts/dialogs/options/change_password.js b/src/public/javascripts/dialogs/options/change_password.js
index 171893def..ff94b9e00 100644
--- a/src/public/javascripts/dialogs/options/change_password.js
+++ b/src/public/javascripts/dialogs/options/change_password.js
@@ -31,7 +31,7 @@ export default class ChangePasswordOptions {
this.$newPassword1 = $("#new-password1");
this.$newPassword2 = $("#new-password2");
- this.$form.submit(() => this.save());
+ this.$form.on('submit', () => this.save());
}
optionsLoaded(options) {}
diff --git a/src/public/javascripts/dialogs/options/sync.js b/src/public/javascripts/dialogs/options/sync.js
index b55d63b04..a7893bca0 100644
--- a/src/public/javascripts/dialogs/options/sync.js
+++ b/src/public/javascripts/dialogs/options/sync.js
@@ -47,7 +47,7 @@ export default class SyncOptions {
this.$syncProxy = $("#sync-proxy");
this.$testSyncButton = $("#test-sync-button");
- this.$form.submit(() => this.save());
+ this.$form.on('submit', () => this.save());
this.$testSyncButton.on('click', async () => {
const result = await server.post('sync/test');
diff --git a/src/public/javascripts/dialogs/prompt.js b/src/public/javascripts/dialogs/prompt.js
index 085948302..ca0567f40 100644
--- a/src/public/javascripts/dialogs/prompt.js
+++ b/src/public/javascripts/dialogs/prompt.js
@@ -44,7 +44,7 @@ $dialog.on('shown.bs.modal', () => {
shownCb({ $dialog, $question, $answer, $form });
}
- $answer.focus().select();
+ $answer.trigger('focus').select();
});
$dialog.on("hidden.bs.modal", () => {
@@ -53,7 +53,7 @@ $dialog.on("hidden.bs.modal", () => {
}
});
-$form.submit(() => {
+$form.on('submit', () => {
resolve($answer.val());
$dialog.modal('hide');
diff --git a/src/public/javascripts/dialogs/protected_session.js b/src/public/javascripts/dialogs/protected_session.js
index dd2debb54..04c7c6f3e 100644
--- a/src/public/javascripts/dialogs/protected_session.js
+++ b/src/public/javascripts/dialogs/protected_session.js
@@ -7,7 +7,7 @@ const $passwordInput = $dialog.find(".protected-session-password");
export function show() {
$dialog.modal();
- $passwordInput.focus();
+ $passwordInput.trigger('focus');
}
export function close() {
@@ -18,7 +18,7 @@ export function close() {
catch (e) {}
}
-$passwordForm.submit(() => {
+$passwordForm.on('submit', () => {
const password = $passwordInput.val();
$passwordInput.val("");
diff --git a/src/public/javascripts/mobile.js b/src/public/javascripts/mobile.js
index ac370ba88..0a9074a34 100644
--- a/src/public/javascripts/mobile.js
+++ b/src/public/javascripts/mobile.js
@@ -137,7 +137,7 @@ $("#switch-to-desktop-button").on('click', () => {
});
$("#log-out-button").on('click', () => {
- $("#logout-form").submit();
+ $("#logout-form").trigger('submit');
});
// this is done so that startNotePath is not used
diff --git a/src/public/javascripts/services/attributes.js b/src/public/javascripts/services/attributes.js
index 4e8b362e0..096a13ad4 100644
--- a/src/public/javascripts/services/attributes.js
+++ b/src/public/javascripts/services/attributes.js
@@ -213,7 +213,7 @@ class Attributes {
$tr.after($new);
- $new.find('input').focus();
+ $new.find('input').trigger('focus');
});
const removeButton = $("")
diff --git a/src/public/javascripts/services/note_autocomplete.js b/src/public/javascripts/services/note_autocomplete.js
index 228a3e496..3a2d4acd1 100644
--- a/src/public/javascripts/services/note_autocomplete.js
+++ b/src/public/javascripts/services/note_autocomplete.js
@@ -36,7 +36,7 @@ function showRecentNotes($el) {
$el.setSelectedPath("");
$el.autocomplete("val", "");
- $el.focus();
+ $el.trigger('focus');
}
function initNoteAutocomplete($el, options) {
diff --git a/src/public/javascripts/services/note_detail.js b/src/public/javascripts/services/note_detail.js
index c7c9e8b18..7d0d942c7 100644
--- a/src/public/javascripts/services/note_detail.js
+++ b/src/public/javascripts/services/note_detail.js
@@ -289,11 +289,14 @@ async function refreshTabs(sourceTabId, noteId) {
}
function focusOnTitle() {
- getActiveTabContext().$noteTitle.focus();
+ getActiveTabContext().$noteTitle.trigger('focus');
}
function focusAndSelectTitle() {
- getActiveTabContext().$noteTitle.focus().select();
+ getActiveTabContext()
+ .$noteTitle
+ .trigger('focus')
+ .trigger('select');
}
/**
diff --git a/src/public/javascripts/services/note_detail_empty.js b/src/public/javascripts/services/note_detail_empty.js
index 61db3ae8b..5a452f339 100644
--- a/src/public/javascripts/services/note_detail_empty.js
+++ b/src/public/javascripts/services/note_detail_empty.js
@@ -25,7 +25,7 @@ class NoteDetailEmpty {
});
noteAutocompleteService.showRecentNotes(this.$autoComplete);
- this.$autoComplete.focus();
+ this.$autoComplete.trigger('focus');
}
show() {}
diff --git a/src/public/javascripts/services/note_detail_protected_session.js b/src/public/javascripts/services/note_detail_protected_session.js
index fd16cd331..52e77a0eb 100644
--- a/src/public/javascripts/services/note_detail_protected_session.js
+++ b/src/public/javascripts/services/note_detail_protected_session.js
@@ -10,7 +10,7 @@ class NoteDetailProtectedSession {
this.$passwordForm = ctx.$tabContent.find(".protected-session-password-form");
this.$passwordInput = ctx.$tabContent.find(".protected-session-password");
- this.$passwordForm.submit(() => {
+ this.$passwordForm.on('submit', () => {
const password = this.$passwordInput.val();
this.$passwordInput.val("");
diff --git a/src/public/javascripts/services/note_detail_text.js b/src/public/javascripts/services/note_detail_text.js
index d97752ab3..1e863aa9b 100644
--- a/src/public/javascripts/services/note_detail_text.js
+++ b/src/public/javascripts/services/note_detail_text.js
@@ -110,7 +110,7 @@ class NoteDetailText {
}
focus() {
- this.$editorEl.focus();
+ this.$editorEl.trigger('focus');
}
show() {}
diff --git a/src/public/javascripts/services/search_notes.js b/src/public/javascripts/services/search_notes.js
index 0a092281e..2145ea02e 100644
--- a/src/public/javascripts/services/search_notes.js
+++ b/src/public/javascripts/services/search_notes.js
@@ -41,7 +41,7 @@ function showSearch() {
}
});
- $searchInput.focus();
+ $searchInput.trigger('focus');
}
function hideSearch() {
@@ -75,7 +75,7 @@ async function doSearch(searchText) {
if (searchText.trim().length === 0) {
toastService.showMessage("Please enter search criteria first.");
- $searchInput.focus();
+ $searchInput.trigger('focus');
return;
}
@@ -151,7 +151,7 @@ function init() {
}
}
-$searchInput.keyup(e => {
+$searchInput.on('keyup',e => {
const searchText = $searchInput.val();
if (e && e.which === $.ui.keyCode.ESCAPE || $.trim(searchText) === "") {