Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Общие вопросы по PHP » Как сделать чекбокс обязательным во всплывающем окне формы комментариев?

Как сделать чекбокс обязательным во всплывающем окне формы комментариев?


     31.01.2018    чекбокс, комментарии    Все вопросы » Общие вопросы по PHP    2740

вопрос
В файле /engine/ajax/replycomments.php добавил чекбокс:

if ($config['allow_subscribe'] AND $user_group[$member_id['user_group']]['allow_subscribe'] OR !$is_logged) {
echo <<<HTML
<div style="padding-top:22px;">
	<label class="comments_subscribe"><input type="checkbox" name="subscribe{$id}" id="subscribe{$id}" value="1" checked=\"checked\">{$lang['c_subscribe']}</label>
</div>
<div style="padding-top:0px;">
	<label class="comments_subscribe"><input type="checkbox" name="privacy" value="1">{$lang['c_privacy']}</label>
</div>
HTML;
}

Как сделать его обязательным? Пробовал добавляеть параметр required, не получается.

Ответа пока нет


19 комментариев

irrwisch
Юзер

irrwisch - 31 января 2018 15:43 -

Только с помощью javascript, пример

dim
Юзер

dim - 31 января 2018 16:49 -

Правильно ли я понимаю, что нужно указать ID у input и вставить код:

function myFunction() {
var x = document.getElementById("ЗДЕСЬ ID").required;
document.getElementById("demo").innerHTML = x;
}

В один из JS файлов (в какой, если не секрет?), или все гораздо сложнее?

vitnet
PHP-developer

vitnet - 31 января 2018 17:55 -

Редактируйте файл dle_js.js

dim
Юзер

dim - 1 февраля 2018 12:51 -

SANDER, такое решение не подходит. Эта галочка означает, что пользователь принимает условия Политики конфиденциальности сайта. Поэтому нужно, чтобы отправка комментария происходила только при условии того, что пользователь самостоятельно выставляет обязательную галочку. readonly не работает.

Sander
PHP-developer

Sander - 1 февраля 2018 21:27 -

Т.е. вы хотите чтобы был чекбокс и он был всегда включен без возможности отключения?
Вариант 1:
Я не пробовал. Добавьте инпуту аттрибуты checked и readonly

Вариант 2:
Раз уж все равно нет выбора, то в чем смысл чекбокса как такового? Используйте input type="hidden"

SanDev.pro - мой блог.

Telegram: @sandev
Skype: Sander8804

BRAGA
Юзер

BRAGA - 1 февраля 2018 22:54 -

Такой вариант подойдет?
<input type="checkbox" onclick="event.preventDefault();" checked>

dim
Юзер

dim - 1 февраля 2018 23:17 -

BRAGA, не совсем. Этот код ставит галочку по умолчанию и не дает ее снять. Все-таки хотелось бы, чтобы пользователь сам ее ставил, а не по принуждению.

maks
Юзер

maks - 1 февраля 2018 23:03 -

В чекбокс добавь
 id="checkall"

А в кнопку
class="checkall"
и
disabled=""

и js
$('#checkall').on('change', function(){
  if($(this).is(':checked')) $('.checkall').attr('disabled', false);
  else $('.checkall').attr('disabled', true);
}); 

dim
Юзер

dim - 1 февраля 2018 23:20 -

maks, спасибо, обязательно проверю, если смогу найти, где находится код кнопки. Там в JS-файлах черт ногу сломит.

maks
Юзер

maks - 1 февраля 2018 23:22 -

Кнопка в replycomments.php в самом низу

maks
Юзер

maks - 1 февраля 2018 23:25 -

<input class="bbcodes" title="{$lang['reply_comments']}" type="button" onclick="ajax_fast_reply('{$id}', '{$indent}'); return false;" value="{$lang['reply_comments_1']}">

dim
Юзер

dim - 1 февраля 2018 23:32 -

Вставил вот так:

<input class="bbcodes" title="{$lang['reply_comments']}" type="button" class="checkall" disabled="" onclick="ajax_fast_reply('{$id}', '{$indent}'); return false;" value="{$lang['reply_comments_1']}">


ID у checkbox указал:

<input type="checkbox" name="checkall" id="checkall" value="1">


JS ставил в main.tpl и dle_js.js, но все равно комментарий публикуется без галочки.

maks
Юзер

maks - 1 февраля 2018 23:34 -


dim
Юзер

dim - 1 февраля 2018 23:45 -

Все равно не получается. У меня кнопка стилизованная, может из-за этого. Мне в общем-то и не нужно, чтобы она была блеклой, а потом загоралась. Достаточно просто как по дефолту реализовано в DLE, нажимаешь кнопку, а рядом с галочкой сообщение типа "чтобы продолжить, установите флажок".

maks
Юзер

maks - 1 февраля 2018 23:50 -

Стили тут не причем. js добавь просто в man.tpl в конец. На примере же всё работает.

dim
Юзер

dim - 1 февраля 2018 23:52 -

Так и сделал, добавил в конце main.tpl перед </body>


<script>
$('#checkall').on('change', function(){
  if($(this).is(':checked')) $('.checkall').attr('disabled', false);
  else $('.checkall').attr('disabled', true);
}); 
</script>


Завтра еще раз попробую, спасибо

maks
Юзер

maks - 1 февраля 2018 23:55 -

Кэш почисти, может у тебя старый файл ещё грузится.

dim
Юзер

dim - 2 февраля 2018 12:36 -

Не, не получается, несколько раз пробовал, все сверял, кэш чистил, обновлял через ctrl+f5, ни в какую.

maks
Юзер

maks - 2 февраля 2018 15:17 -

Попробуй скрипт добавить в само окно, больше не знаю из-за чего не работает.

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

наверх