mirror of
https://github.com/inventree/InvenTree.git
synced 2025-05-01 04:56:45 +00:00
Disable form input unless the form is valid
- Disable on first open until server responds - Disable after form submission until next server response
This commit is contained in:
parent
8d6a4415e5
commit
11af4e5683
@ -18,6 +18,16 @@ function attachSelect(modal) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function loadingMessageContent() {
|
||||||
|
/* Render a 'loading' message to display in a form
|
||||||
|
* when waiting for a response from the server
|
||||||
|
*/
|
||||||
|
|
||||||
|
// TODO - This can be made a lot better
|
||||||
|
return '<b>Loading...</b>';
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
function afterForm(response, options) {
|
function afterForm(response, options) {
|
||||||
/* afterForm is called after a form is successfully submitted,
|
/* afterForm is called after a form is successfully submitted,
|
||||||
* and the form is dismissed.
|
* and the form is dismissed.
|
||||||
@ -61,7 +71,15 @@ function afterForm(response, options) {
|
|||||||
else if (options.reload) {
|
else if (options.reload) {
|
||||||
location.reload();
|
location.reload();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function modalEnable(modal, enable=true) {
|
||||||
|
/* Enable (or disable) modal form elements to prevent user input
|
||||||
|
*/
|
||||||
|
|
||||||
|
// Enable or disable the submit button
|
||||||
|
$(modal).find('#modal-form-submit').prop('disabled', !enable);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -138,12 +156,18 @@ function openModal(options) {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Unless the title is explicitly set, display loading message
|
||||||
if (options.title) {
|
if (options.title) {
|
||||||
modalSetTitle(modal, options.title);
|
modalSetTitle(modal, options.title);
|
||||||
|
} else {
|
||||||
|
modalSetTitle(modal, 'Loading Form Data...');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Unless the content is explicitly set, display loading message
|
||||||
if (options.content) {
|
if (options.content) {
|
||||||
modalSetContent(modal, options.content);
|
modalSetContent(modal, options.content);
|
||||||
|
} else {
|
||||||
|
modalSetContent(modal, loadingMessageContent());
|
||||||
}
|
}
|
||||||
|
|
||||||
// Default labels for 'Submit' and 'Close' buttons in the form
|
// Default labels for 'Submit' and 'Close' buttons in the form
|
||||||
@ -156,6 +180,11 @@ function openModal(options) {
|
|||||||
backdrop: 'static',
|
backdrop: 'static',
|
||||||
keyboard: false,
|
keyboard: false,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Disable the form
|
||||||
|
modalEnable(modal, false);
|
||||||
|
|
||||||
|
// Finally, display the modal window
|
||||||
$(modal).modal('show');
|
$(modal).modal('show');
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -258,8 +287,14 @@ function handleModalForm(url, options) {
|
|||||||
modalSubmit(modal, function() {
|
modalSubmit(modal, function() {
|
||||||
$(modal).find('.js-modal-form').ajaxSubmit({
|
$(modal).find('.js-modal-form').ajaxSubmit({
|
||||||
url: url,
|
url: url,
|
||||||
|
beforeSend: function() {
|
||||||
|
// Disable modal until the server returns a response
|
||||||
|
modalEnable(modal, false);
|
||||||
|
},
|
||||||
// POST was successful
|
// POST was successful
|
||||||
success: function(response, status, xhr, f) {
|
success: function(response, status, xhr, f) {
|
||||||
|
// Re-enable the modal
|
||||||
|
modalEnable(modal, true);
|
||||||
if ('form_valid' in response) {
|
if ('form_valid' in response) {
|
||||||
// Form data was validated correctly
|
// Form data was validated correctly
|
||||||
if (response.form_valid) {
|
if (response.form_valid) {
|
||||||
@ -322,6 +357,10 @@ function launchModalForm(url, options = {}) {
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
success: function(response) {
|
success: function(response) {
|
||||||
|
|
||||||
|
// Enable the form
|
||||||
|
modalEnable(modal, true);
|
||||||
|
|
||||||
if (response.title) {
|
if (response.title) {
|
||||||
modalSetTitle(modal, response.title);
|
modalSetTitle(modal, response.title);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user