Всего 123 809 комментариев

mngatoff
01 сентября 2022, 17:11
+2
замутите patreon / boosty, я бы подписался
Alexey
01 сентября 2022, 16:47
0
Мне кажется, в этом случае, проще было бы дать чекбоксам разные имена и добавить кастомный валидатор, который при сабмите проверял бы, заполнен ли хоть один чекбокс. И если нет, то выводил бы предупреждение
Ивaныч
01 сентября 2022, 16:43
0
Конструкции типа [[!+fi.error.chetest]] используются для formit без ajaxForm.
Не знал об этом, исключил эту конструкцию.
Спасибо за информацию!
Ивaныч
01 сентября 2022, 16:31
0
Нее, тут идея следущая: можно выбрать 1 вариант, а можно и оба(вариант1+вариант2) = поэтому чекбокс, а не радио.
Ивaныч
01 сентября 2022, 16:27
0
Насколько понимаю, причина в специфике указания имени для чекбоксов и радио, а точнее name=«chetest[]» != name=«chetest». В AjaxForm идет проверка и из-за [] чекбоксы и радио проверку не проходят, и поэтому уведомление не исчезает.

Пробовал доработать строку в default.js:
$(document).on('keypress change', '.error', function () {
            var key = $(this).attr('name'); 
            $(this).removeClass('error');
            $('.error_' + key).html('').removeClass('error');
        });
заменив var key = $(this).attr('name'); на var key = $(this).attr('id');
или var key = $(this).attr('name'); на input[type=«hidden»][name="' + chetest[] + '"]
Понимаю, что мои попытки ничтожны.
Alexey
01 сентября 2022, 16:21
0
Я не совсем понимаю логику — почему у разных чекбоксов один атрибут name? Да ещё массив… не говоря уже про одинаковые id. Если нужно выбрать в форме какой-то один вариант из двух, то здесь радиобаттоны нужны, не?

Конструкции типа [[!+fi.error.chetest]] используются для formit без ajaxForm.

Вот рабочий вариант для одного чекбокса:

<input type="hidden" name="q_agree" value="">
<div class="form-b__field form-b__field_full">
    <input type="checkbox" name="q_agree" class="checkbox" id="politic" value="1" checked="">
    <label for="politic"><a href="politika-konfidenczialnosti">Политика конфиденциальности</a></label> 
    <span class="error_q_agree"></span>   
</div>

скрытый инпут нужен для проверки на пустоту, иначе required-валидация пропустит. А спан с классом error_q_agree как раз и отвечает за вывод ошибок (класс строится из строки 'erorr_' + имя поля)
Ивaныч
01 сентября 2022, 16:08
0
<form action="[[*id]]" method="post" class="ajax_form af_example" enctype="multipart/form-data">
<div class="form-group">
<label for="chetest">Поле checkbox <span class="required">*</span>:</label>
<div class="controls">
<span class="error_chetest">[[!+fi.error.chetest]]</span>
<span><input type="checkbox" name="chetest[]" id="chetest" value="Вариант1" [[!+fi.chetest:FormItIsChecked=`Вариант1`]]>Вариант1</span>
<span><input type="checkbox" name="chetest[]" id="chetest" value="Вариант2" [[!+fi.chetest:FormItIsChecked=`Вариант2`]]>Вариант2</span>
<input type="hidden" name="chetest[]" value="">
</div>
</div>
Артур Шевченко
01 сентября 2022, 10:34
0
Надо бы в другой раздел написать Работа называется. А там желающие оценят.
Alexey
01 сентября 2022, 09:46
0
Не скажу за радиокнопки, но чекбокс у меня корректно отрабатывает — сообщение об ошибке скрывается, если его прочекать. Без всяких доработок js

skrinshoter.ru/s/010922/JHg0TdiX?a
skrinshoter.ru/s/010922/AwHFH32a?a

Покажите чанк формы.
Ивaныч
31 августа 2022, 22:40
0
Попробую разобраться, хотя заранее сомневаюсь в собственном успехе — второй день пытаюсь, иначе не обратился бы на форум за помощью.

Артур, в любом случае, спасибо за отклик и помощь!
Артур Шевченко
31 августа 2022, 22:12
+1
Вот кусок кода который скрывает ошибки. Проверьте вёрстку.
Ивaныч
31 августа 2022, 21:52
0
На счёт необязательности, согласен. Но, корректное решение нужно искать в исходниках, а не колхозить изощрения. Так считаю. Тем более это не частный случай, а всего лишь банальная недоработка популярного плагина. Если у кого есть решение вопроса по существу, прошу помочь.
Артур Шевченко
31 августа 2022, 20:46
0
Лезть в исходники необязательно, повесь на checkbox и radio обработчик события change и скрывай ошибки.
Николай Савин
31 августа 2022, 20:15
+4
Еще есть мысль создать сбор средств по подписке
Андрей Шевяков
31 августа 2022, 19:58
1
+3
Спасибо за ваш труд! Закинул малость, что было на Юмани. Стараюсь всегда донатить как только такие посты выкладываете.

Если каждый кто делает интернет-магазины используя наши наработки пришлет хотя бы один процент от той суммы, которые зарабатывает, используя miniShop — мы сможем выделить больше времени и сил и принести пользу.
К сожалению сейчас не очень с заказами на сайтики, но подход хороший вы написали, буду закладывать процент на развитие miniShop в бюджеты проектов.

P.S. Может есть вариант как то закрепить на главной странице сразу блок со сбором донатов на развитие miniShop?
Ivan
31 августа 2022, 12:09
0
Попробовал. Так удобно. Просто кайф)
Антон Пархоменко
31 августа 2022, 11:30
0
Доброго дня.
При сканировании одного из своих сайтов на уязвимость, я обнаружил, что использование данного плагина открывает возможность к sql-инъекции.
Константин
31 августа 2022, 07:15
0
Обновился, ощутил масштаб писдса, откатился обратно, но ошибки с созданием новых шаблонов, сниппетов, чанков и т.д. осталось. Все создается с id = 0 и ошибкой An error occurred… Решается обновлением автоинкремента в базе. НО. В таблице плагинов не получается сбросить автоинкремент, команда ALTER TABLE `modx_site_plugins` AUTO_INCREMENT = 0; не срабатывает MySQL вернула пустой результат (т.е. ноль строк). (Запрос занял 0.0046 сек.). Что поможет исправить?
Артур Шевченко
30 августа 2022, 18:54
0
Или так
$data = new FormData();
$data.append('alias', JSON.stringify(ali));
...
body: $data
А на сервере $alias = json_decode($_POST['alias'],1);