diff --git a/static/js/user_profile_2.js b/static/js/user_profile_2.js index c26abbd..c9396c8 100644 --- a/static/js/user_profile_2.js +++ b/static/js/user_profile_2.js @@ -61,7 +61,7 @@ function select_tab_profile (el,url,owner_type=null, check_orders_required) { document.querySelector("#ru_lang").href = confirm_url_f_lang_ru document.querySelector("#en_lang").href = confirm_url_f_lang_en - daterangepickerInit($('.w_daterangepicker'), daterangepickerInit) + datarangepickerinitAll() // let header = document.querySelector("header") // header.scrollIntoView({ // behavior: "smooth", diff --git a/static/v2/js/forms.js b/static/v2/js/forms.js index 0e222f3..c9ec6a8 100644 --- a/static/v2/js/forms.js +++ b/static/v2/js/forms.js @@ -1,5 +1,6 @@ function chooseCheckbox(el) { if (!el) return; + resetFieldError(el); let $parent = el.closest('.field_container'); let $checkbox = $parent.querySelector('.checkbox') @@ -128,4 +129,63 @@ function selectInputWContainer (el, callback) { $input.focus() if (callback) callback(el); +} + +function resetFieldError (el){ + if (!el) return; + let $field = el.closest('.field_container'); + if (!$field) return; + + let $error = $field.querySelector('.error_container'); + if (!$error) return; + + if (!checkFieldEmpty($field)){ + $error.remove() + } +} + +function checkFieldEmpty($field) { + if (!$field) return; + let empty = true; + + switch ($field.dataset.type) { + case 'checkbox': + let $checkbox = $field.querySelector('.checkbox'); + let c_value = $checkbox.classList.contains('checked'); + if (c_value) empty = false; + + break; + + case 'radio': + let $radio = $field.querySelector('.radio.checked'); + if ($radio) empty = false; + + break; + + case 'location': + let $location = $field.querySelector('input'); + let l_value = $location.dataset.id; + + if (l_value) empty = false; + break; + + case 'input': + let $input = $field.querySelector('input'); + if ($input.value) empty = false; + + break; + + case 'textarea': + let $textarea = $field.querySelector('textarea'); + if ($textarea.value) empty = false; + + break; + + case 'date': + let $date = $field.querySelector('input'); + if ($date.value) empty = false; + + break; + } + return empty; } \ No newline at end of file diff --git a/static/v2/js/forms/f_make_mover_order.js b/static/v2/js/forms/f_make_mover_order.js index 584998c..e23ec69 100644 --- a/static/v2/js/forms/f_make_mover_order.js +++ b/static/v2/js/forms/f_make_mover_order.js @@ -42,7 +42,7 @@ function makeMoverOrder(form) { $(res.responseJSON.html).insertAfter($($title)) - daterangepickerInit($('.w_daterangepicker'), daterangepickerInit) + datarangepickerinitAll() } }) diff --git a/static/v2/js/forms/f_make_poster_order.js b/static/v2/js/forms/f_make_poster_order.js index fb8e48b..e0718d5 100644 --- a/static/v2/js/forms/f_make_poster_order.js +++ b/static/v2/js/forms/f_make_poster_order.js @@ -42,7 +42,7 @@ function makePosterOrder(form) { $(res.responseJSON.html).insertAfter($($title)) - daterangepickerInit($('.w_daterangepicker'), daterangepickerInit) + datarangepickerinitAll() } }) diff --git a/static/v2/js/widgets/w_daterangepicker.js b/static/v2/js/widgets/w_daterangepicker.js index fe39f3b..b3972a0 100644 --- a/static/v2/js/widgets/w_daterangepicker.js +++ b/static/v2/js/widgets/w_daterangepicker.js @@ -29,10 +29,15 @@ function setLocalSets() { return locale_lang } -$(function (){daterangepickerInit($('.w_daterangepicker'), daterangepickerInit)}) +function datarangepickerinitAll(){ + $('.w_daterangepicker').each(function () { + daterangepickerInit(this, daterangepickerInit) + }) +} function daterangepickerInit(el, callback) { - $('.date_range_input_cont input').daterangepicker({ + let $datarangepicker = el.querySelector('input') + $($datarangepicker).daterangepicker({ "autoapply": true, "linkedCalendars": false, "singleDatePicker": true, @@ -43,8 +48,9 @@ function daterangepickerInit(el, callback) { }, function (start, end, label) { let $parent = el.closest('.w_daterangepicker') if (last_opened_daterangepicker) $parent = last_opened_daterangepicker.closest('.w_daterangepicker'); - let $input = $parent.find(".date_range_input_cont input") - $input.val(start.format('DD.MM.YYYY')); + let $input = $parent.querySelector(".date_range_input_cont input") + $input.value = start.format('DD.MM.YYYY'); + resetFieldError(el); if (callback) callback(el) }); } diff --git a/static/v2/js/widgets/w_radio_inputs.js b/static/v2/js/widgets/w_radio_inputs.js index 41968b6..1e5e4f6 100644 --- a/static/v2/js/widgets/w_radio_inputs.js +++ b/static/v2/js/widgets/w_radio_inputs.js @@ -1,5 +1,6 @@ function chooseRadioInput(el, callback){ if (!el) return; + let $parent = el.closest('.w_radio_inputs'); if (!$parent) return; @@ -13,6 +14,8 @@ function chooseRadioInput(el, callback){ $radio.classList.toggle("checked"); let el_name = $parent.dataset.name; + + resetFieldError(el); if (callback) callback(el, el_name) } diff --git a/static/v2/js/widgets/w_select_country.js b/static/v2/js/widgets/w_select_country.js index 58e5d3f..1e86bd5 100644 --- a/static/v2/js/widgets/w_select_country.js +++ b/static/v2/js/widgets/w_select_country.js @@ -96,7 +96,8 @@ function selectCountry(el, callback) { $input.dataset.name = country_data.full_name; $input.dataset.id = country_data.id; - closeSelectCountry(el) + closeSelectCountry(el); + resetFieldError(el); } function resetCountrySelect(el, callback) { diff --git a/static/v2/js/widgets/w_textarea_w_counter.js b/static/v2/js/widgets/w_textarea_w_counter.js index ca64c81..ee65ec9 100644 --- a/static/v2/js/widgets/w_textarea_w_counter.js +++ b/static/v2/js/widgets/w_textarea_w_counter.js @@ -1,6 +1,7 @@ function textareaInputE (el, callback){ if (!el) return; + resetFieldError(el); let $counter = $(".symbols_counter")[0] let $parent = el.closest(".w_textarea_w_counter") diff --git a/templates/v2/forms/f_create_customer_route.html b/templates/v2/forms/f_create_customer_route.html index 4931662..16b7c75 100644 --- a/templates/v2/forms/f_create_customer_route.html +++ b/templates/v2/forms/f_create_customer_route.html @@ -43,7 +43,7 @@