0.0.33 forms

This commit is contained in:
SBD
2025-01-15 18:40:11 +03:00
parent c247bfcefa
commit 4fab7ba2c0
10 changed files with 81 additions and 10 deletions

View File

@@ -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",

View File

@@ -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;
}

View File

@@ -42,7 +42,7 @@ function makeMoverOrder(form) {
$(res.responseJSON.html).insertAfter($($title))
daterangepickerInit($('.w_daterangepicker'), daterangepickerInit)
datarangepickerinitAll()
}
})

View File

@@ -42,7 +42,7 @@ function makePosterOrder(form) {
$(res.responseJSON.html).insertAfter($($title))
daterangepickerInit($('.w_daterangepicker'), daterangepickerInit)
datarangepickerinitAll()
}
})

View File

@@ -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)
});
}

View File

@@ -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)
}

View File

@@ -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) {

View File

@@ -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")

View File

@@ -43,7 +43,7 @@
<div class="field_container" data-type="input" style="width: 100%" data-name="phone">
{% trans "Если вы оставите это поле пустым - перевозчики смогут только написать вам в личные сообщения на нашем сайте TripWB.com" as attention_phone %}
<label for="id_cargo_type">{% trans "Контактный номер телефона, по которому с Вами могут связаться перевозчики" %}</label>
<input class="half" style="height: unset;" type="text" name="phone" id="id_phone" placeholder="{% trans 'Укажите телефон' %}"{% if form.initial.phone %} value="{{ form.initial.phone }}" {% endif %}>
<input class="half" style="height: unset;" type="text" name="phone" id="id_phone" placeholder="{% trans 'Укажите телефон' %}"{% if form.initial.phone %} value="{{ form.initial.phone }}" {% endif %} oninput="resetFieldError(this);">
{% if form.errors.phone %}<div class="error_container">{{ form.errors.phone.0 }}</div>{% endif %}
{% include 'v2/widgets/w_pay_attention.html' with text=attention_phone %}
</div>

View File

@@ -48,7 +48,7 @@
<div class="field_container" data-type="input" style="width: 100%" data-name="phone">
{% trans "Если вы оставите это поле пустым - перевозчики смогут только написать вам в личные сообщения на нашем сайте TripWB.com" as attention_phone %}
<label for="id_cargo_type">{% trans "Контактный номер телефона, по которому с Вами могут связаться перевозчики" %}</label>
<input class="half" style="height: unset;" type="text" name="phone" id="id_phone" placeholder="{% trans 'Укажите телефон' %}"{% if form.initial.phone %} value="{{ form.initial.phone }}" {% endif %}>
<input class="half" style="height: unset;" type="text" name="phone" id="id_phone" placeholder="{% trans 'Укажите телефон' %}"{% if form.initial.phone %} value="{{ form.initial.phone }}" {% endif %} oninput="resetFieldError(this);">
{% if form.errors.phone %}<div class="error_container">{{ form.errors.phone.0 }}</div>{% endif %}
{% include 'v2/widgets/w_pay_attention.html' with text=attention_phone %}
</div>