UMIhelp

Разработка сайта на UMI.CMS => Настройка системы и модулей => Тема начата: ragivort от 11 Марта 2016, 09:24:56

Название: Как сделать комментарии современными?
Отправлено: ragivort от 11 Марта 2016, 09:24:56
Всем привет, стоят на сайте стандартные коменты. Шаблон XSLT
При не заполнении полей, страница улетает наверх и там появляется следующее

Errors list:
Комментарий не был добавлен. Комментарий должен содержать непустой заголовок или непустой текст.


Как сделать так, чтобы при не заполнении(или неверном заполнении) поля, не вылетало бы наверх и не выводилась бы эта ошибка, а просто поле становилось бы красным. Куда копать?

Шаблон такой

    <xsl:template match="action">
        <h3>Добавить комментарий</h3>
        <form method="post" action="{.}" name="form_addcomment" id="form_addcomment">
            <fieldset class="intext">

                <label for="comment_author">
                    <span>Ваш имя:</span>
                    <input type="text" name="author_nick" id="comment_author" />
                </label>
                <label for="comment_text" id="for_comment" title="Текст">
                    <span>Текст:&nbsp;<sup class="asterisk">*</sup></span>
                    <textarea name="comment" id="comment_text" cols="6" />
                </label>
            </fieldset>
           <xsl:apply-templates select="document('udata://system/captcha//id')/udata[url]" />
            <input class="btt submit-send" type="submit" value="отправить"/>
        </form>

    </xsl:template>


    <xsl:template match="user[@status = 'auth']">
        <h3>Добавить комментарий</h3>

        <form method="post" action="/comments/post/{/result/@pageId}/" name="form_addcomment" id="form_addcomment">

            <fieldset class="intext">
                <!--<label for="comment_title" id="for_title" title="Заголовок">
                    <span>Заголовок:&nbsp;<sup class="asterisk">*</sup></span>
                    <input type="text" name="title" id="comment_title" />
                </label>-->

                <label for="comment_text" id="for_comment" title="Текст">
                    <span>Текст:&nbsp;<sup class="asterisk">*</sup></span>
                    <textarea name="comment" id="comment_text" cols="6" />
                </label>
            </fieldset>

            <input class="submit-send" type="submit" value="Отправить"/>

        </form>
    </xsl:template>

Спасибо

Название: Re: Как сделать комментарии современными?
Отправлено: Rodogor от 11 Марта 2016, 10:22:15
Копать в сторону валидации заполнения полей на JS/JQUERY.

В стандартных шаблонах есть подобная валидация, поиском по JS файлам можно попробовать найти site.forms.errors.check (в разных версиях и шаблонах этот файл может находиться в разных местах. один из вариантов - /templates/template/js/forms.js , другой вариант  /js/client/...)
Название: Re: Как сделать комментарии современными?
Отправлено: aghigay от 11 Марта 2016, 11:03:27
Есть проще вариант, но не совсем кроссбраузерный. Можно поставить required="required" у полей input или textarea и тогда будет примерно такой же эффект. Но, повторюсь, не везде работает. Если это не слишком критично, то можно обойтись и этим вариантом.
Название: Re: Как сделать комментарии современными?
Отправлено: crazygeorgio от 11 Марта 2016, 11:51:05
заголовок убрал, а заголовок в комментариях обязателен, просто вместо того чтобы убирать заголовок можно сделать его невидимым полем и назначить свой название

<input type="hidden" name="title" value="Комментарий" />