dle-modules / DLE-UniForm

Универсальные формы обратной связи для DataLife Engine
http://pafnuty.name/modules/159-uniform.html
MIT License
22 stars 12 forks source link

не работает проверка чекбокса версия модуля 1.4 dle 10.4 #55

Open tralalon opened 7 years ago

tralalon commented 7 years ago

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

[uf_error_checkbox1]
You must to accept TERMS & CONDITIONS
[/uf_error_checkbox1] 

Никак не могу сделать так чтобы в ошибке н ебыло этих тегов а только текст те выводит теги на страницу. Если галочку ставлю то все в порядке.

В form где ошибки пишу так

[uf_error_checkbox1]
<li>You must to accept TERMS & CONDITIONS</li>
[/uf_error_checkbox1]

В самой форме вывожу так:

<input type="checkbox" 
            name="checkbox1" value="oneCheck"
[uf_checkbox_checkbox1_oneCheck]checked[/uf_checkbox_checkbox1_oneCheck]
> I agree with the Terms & Conditions</a>

конфиг:

required = email,name,checkbox1
...
checkboxFields = checkbox1

@pafnuty не забудь посмотреть этот тиккет :ticket:

tralalon commented 7 years ago

еще хотел добавить, сообщение об ошибке с лишними тегами выводится только после заполнения первого обязательного поля, и фома всеравно может быть отправлена

vad-glove commented 6 years ago

а решение где посмотреть можно?

pafnuty commented 6 years ago

@vad-glove Этот баг в статусе 'open', пока решения нет.

vad-glove commented 6 years ago

понял - по крайней мере лучшее решение вышло через html <input type="checkbox" required />

Можно узнать а формат даты задать для передачи на почту можно? что бы приходило к примеру 12/12/2018 сорри что не в тему

get-web commented 5 years ago

Может пригодиться вариант с оповещением: Всем обязательным чекбоксам добавляем data-uf-checkbox-required="Тут текст предупреждения"

Например: <input type="checkbox" name="rules" data-uf-checkbox-required="Необходимо согласиться с правилами">

В uniform.js после:

    // ajax-отправка формы + эффекты
    .on('submit', '[data-uf-form]', function () {

Вставляем: if (!verifyСheckboxInForm($(this))) return false;

Перед или после этой функции:

// Функция, выполняемая перед отправкой формы
function ufStart(formData, jqForm) {
    laddaLoad = jqForm.find('.ladda-button').ladda();
    laddaLoad.ladda('start');

    return true;
}

Вставляем:

// Проверка обязательного checkbox
function verifyСheckboxInForm(form) {
    let checkboxArr = form.find('[data-uf-checkbox-required]:not(:checked)');
    if (checkboxArr.length > 0) {
        alert(checkboxArr.eq(0).attr("data-uf-checkbox-required"));
        return false;
    }
    return true;
}

Теперь, если чекбокс не выбран, то форма не будет отправляться и будет выскакивать alert с текстом из первого не выбранного обязательного чекбокса. Вместо alert можно подцепить модалку к примеру colorbox ну или какой-нибудь notify