From d6e7fd78adfcecdb0bca84471702b5d978f9d2b9 Mon Sep 17 00:00:00 2001 From: Cohee <18619528+Cohee1207@users.noreply.github.com> Date: Tue, 6 Aug 2024 22:28:37 +0300 Subject: [PATCH] Add event handlers for dynamically added neo-range-inputs --- public/script.js | 88 +++++++++++++++++++++++++----------------------- 1 file changed, 46 insertions(+), 42 deletions(-) diff --git a/public/script.js b/public/script.js index 5c3c126dd..fe353fd80 100644 --- a/public/script.js +++ b/public/script.js @@ -10745,62 +10745,66 @@ jQuery(async function () { var isManualInput = false; var valueBeforeManualInput; - $('.range-block-counter input, .neo-range-input').on('click', function () { + $(document).on('input', '.range-block-counter input, .neo-range-input', function () { valueBeforeManualInput = $(this).val(); console.log(valueBeforeManualInput); - }) - .on('change', function (e) { - e.target.focus(); - e.target.dispatchEvent(new Event('keyup')); - }) - .on('keydown', function (e) { - const masterSelector = '#' + $(this).data('for'); - const masterElement = $(masterSelector); - if (e.key === 'Enter') { - let manualInput = Number($(this).val()); - if (isManualInput) { - //disallow manual inputs outside acceptable range - if (manualInput >= Number($(this).attr('min')) && manualInput <= Number($(this).attr('max'))) { - //if value is ok, assign to slider and update handle text and position - //newSlider.val(manualInput) - //handleSlideEvent.call(newSlider, null, { value: parseFloat(manualInput) }, 'manual'); - valueBeforeManualInput = manualInput; - $(masterElement).val($(this).val()).trigger('input', { forced: true }); - } else { - //if value not ok, warn and reset to last known valid value - toastr.warning(`Invalid value. Must be between ${$(this).attr('min')} and ${$(this).attr('max')}`); - console.log(valueBeforeManualInput); - //newSlider.val(valueBeforeManualInput) - $(this).val(valueBeforeManualInput); - } - } - } - }) - .on('keyup', function () { - valueBeforeManualInput = $(this).val(); - console.log(valueBeforeManualInput); - isManualInput = true; - }) - //trigger slider changes when user clicks away - .on('mouseup blur', function () { - const masterSelector = '#' + $(this).data('for'); - const masterElement = $(masterSelector); + }); + + $(document).on('change', '.range-block-counter input, .neo-range-input', function (e) { + e.target.focus(); + e.target.dispatchEvent(new KeyboardEvent('keyup', { bubbles: true })); + }); + + $(document).on('keydown', '.range-block-counter input, .neo-range-input', function (e) { + const masterSelector = '#' + $(this).data('for'); + const masterElement = $(masterSelector); + if (e.key === 'Enter') { let manualInput = Number($(this).val()); if (isManualInput) { - //if value is between correct range for the slider + //disallow manual inputs outside acceptable range if (manualInput >= Number($(this).attr('min')) && manualInput <= Number($(this).attr('max'))) { + //if value is ok, assign to slider and update handle text and position + //newSlider.val(manualInput) + //handleSlideEvent.call(newSlider, null, { value: parseFloat(manualInput) }, 'manual'); valueBeforeManualInput = manualInput; - //set the slider value to input value $(masterElement).val($(this).val()).trigger('input', { forced: true }); } else { //if value not ok, warn and reset to last known valid value toastr.warning(`Invalid value. Must be between ${$(this).attr('min')} and ${$(this).attr('max')}`); console.log(valueBeforeManualInput); + //newSlider.val(valueBeforeManualInput) $(this).val(valueBeforeManualInput); } } - isManualInput = false; - }); + } + }); + + $(document).on('keyup', '.range-block-counter input, .neo-range-input', function () { + valueBeforeManualInput = $(this).val(); + console.log(valueBeforeManualInput); + isManualInput = true; + }); + + //trigger slider changes when user clicks away + $(document).on('mouseup blur', '.range-block-counter input, .neo-range-input', function () { + const masterSelector = '#' + $(this).data('for'); + const masterElement = $(masterSelector); + let manualInput = Number($(this).val()); + if (isManualInput) { + //if value is between correct range for the slider + if (manualInput >= Number($(this).attr('min')) && manualInput <= Number($(this).attr('max'))) { + valueBeforeManualInput = manualInput; + //set the slider value to input value + $(masterElement).val($(this).val()).trigger('input', { forced: true }); + } else { + //if value not ok, warn and reset to last known valid value + toastr.warning(`Invalid value. Must be between ${$(this).attr('min')} and ${$(this).attr('max')}`); + console.log(valueBeforeManualInput); + $(this).val(valueBeforeManualInput); + } + } + isManualInput = false; + }); $('.user_stats_button').on('click', function () { userStatsHandler();