X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость ( Вход | Регистрация )

Открыть тему
Тема закрыта
> Счётчик символов textarea
Чеснок
Чеснок
Topic Starter сообщение 14.8.2014, 0:19; Ответить: Чеснок
Сообщение #1


мошенник
*******


Группа: Banned
Сообщений: 3623
Регистрация: 9.12.2009
Из: СССР ☭
Поблагодарили: 1520 раз
Репутация:   262  


Есть код в WP
Код
'comment_field'        => '<p class="comment-form-comment"><label for="comment">' . $SMTheme->_( 'comment' ) . '</label><textarea id="comment" name="comment" cols="45" rows="8" aria-required="true"></textarea></p>',


Есть статья Как реализуется желаемое мной. Но я никак не могу догнать, как мне видоизменить мой код и что куда добавить, чтобы всё работало.

Суть: народ должен видеть сколько символов текста он набрал и какое минимальное количество должен набрать.

Если кто-нибудь сможет помочь, то моим мукам придёт конец и я наконец то смогу уснуть :facepalm:


--------------------
Забанен за мошенничество
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
mialpet
mialpet
сообщение 14.8.2014, 0:35; Ответить: mialpet
Сообщение #2


Частый гость
**

Группа: User
Сообщений: 75
Регистрация: 2.8.2014
Поблагодарили: 14 раз
Репутация:   5  


Ну а если в лоб
Код
'comment_field'        => '<p class="comment-form-comment"><label for="comment">' . $SMTheme->_( 'comment' ) . '</label><div><textarea id="comment" name="comment" cols="45" rows="8" aria-required="true"></textarea></div></p>
<script>
// prototype-analog
function $(obj) {
      if (typeof obj == 'object')
      return obj;
    if (document.getElementById)
        return (document.getElementById(obj));
    else  if (document.all)
        return document.all(obj);

    return null;
}

// PHP str_replace-analog
String.prototype.str_replace = function(srch, rpl)
{
    var ar = this.split(srch);
    return ar.join(rpl);
}

// Узнаём родительский элемент
function getParent(el) {

    return ((el.parentElement) ? el.parentElement : ((el.parentNode) ? el.parentNode : null));

}

// Узнаём параметры элемента: ширину, высоту, а также координаты
function getElementPosition(el)
{
    
    w = el.offsetWidth;
    h = el.offsetHeight;
    
    l = t = 0;
    
    while (el)
    {
            l += el.offsetLeft;
            t += el.offsetTop;
            el = el.offsetParent;
    }

    return {"left":l, "top":t, "width": w, "height":h};
}
function createTextAreaWidget(el, min, max)
{
    var el = $(el);
    var counter = $('counter' + el.id);
    if (!counter)
    {
        var parent = getParent(el);
        var counter = document.createElement('div');
        counter.setAttribute('id', 'counter' + el.id);
        counter.className = 'counter';
        parent.appendChild(counter);
        parent.style.position = 'relative';
        counter.style.position = 'absolute';

        counter.style.left = getElementPosition(el).width + 2 +  'px';
        counter.style.top = 0;
        counter.style.height = getElementPosition(el).height + 'px';
    }

    // перенос строки js принимает за два знака. Исправляем.
    len = el.value.str_replace(String.fromCharCode(13), '').length;
    if (len >= max) {
        el.value = el.value.substr(0, max);
        len = max;
    }

    el.onkeyup = function () {createTextAreaWidget(el, min, max);}
    el.onchange = function () {createTextAreaWidget(el, min, max);}
    createStat(counter, min, max, len);    

}

function createStat(el, min, max, current)
{
    el.innerHTML = '<span class=min>&lt; ' + min + '<\/span><br>';
    var className = (current <= min) ? 'gray' : ((current >= max) ? 'red' : 'normal');
    var cur = (current >= max) ? current + ' !!!' : current;
    el.innerHTML += '<span class=' + className + '>= ' + cur + '<\/span><br>';
    el.innerHTML += '<span class=max>&gt; ' + max + '<\/span>';
}

createTextAreaWidget('comment', 100, 2500);
</script>
',

Хотя я сам спать пошел уже.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
x64
x64
сообщение 14.8.2014, 0:42; Ответить: x64
Сообщение #3


F.A.L.L.O.U.T.
*******

Группа: Super Moderator
Сообщений: 3424
Регистрация: 30.6.2011
Из: Железнодорожный (Балашиха)
Поблагодарили: 2746 раз
Репутация:   289  


mialpet, :blink:

Чеснок,
в wp не силён. но простой подсчёт можно сделать так:
Код
<textarea onkeyup="document.getElementById('num').value = this.value.length"></textarea> <input id="num" disabled value="">

input блокируется для изменения, поэтому в него значение пишется программно, при редактировании текста в textarea


--------------------


Поблагодарили: (1)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Чеснок
Чеснок
Topic Starter сообщение 14.8.2014, 1:03; Ответить: Чеснок
Сообщение #4


мошенник
*******


Группа: Banned
Сообщений: 3623
Регистрация: 9.12.2009
Из: СССР ☭
Поблагодарили: 1520 раз
Репутация:   262  


Оба варианта вырубили и форму комментирования и все комменты снесли, очевидно я в текстеру упёрся как по принципу "знакомую букву увидел" и дело всё в чём-то ещё:
Развернуть/Свернуть
Код
<?php global $SMTheme; ?>
   <?php if ( post_password_required() ) { ?>
        <p><?php $SMTheme->_( 'password' ) ?></p>
    <?php return; } ?>
    <?php if ( $post->comment_status!='open' ) { ?>
        <p><?php $SMTheme->_( 'closedcomments' ) ?></p>
    <?php return; } ?>
    
    <?php if ( have_comments() ) { ?>
        <div id="comments">
            
            <h3 id="comments-title">
            
            <?php
                if (get_comments_number()==1) {
                    printf( $SMTheme->_( 'formoneresponse' ), '<em>' . get_the_title() . '</em>');
                } else {
                    printf( $SMTheme->_( 'formmultiresponse' ), '<em>' . get_the_title() . '</em>', get_comments_number());
                }

            ?></h3>
            
            <ul class="commentlist">
                <?php wp_list_comments('callback=custom_comments'); ?>
            </ul>
            
            <?php if ( get_comment_pages_count() > 1 ) { ?>
                <div class="navigation clearfix">
                    <div class="alignleft"><?php previous_comments_link( $SMTheme->_( 'prevcomments' ) ); ?></div>
                    <div class="alignright"><?php next_comments_link( $SMTheme->_( 'nextcomments' ) ); ?></div>
                </div><!-- .navigation .clearfix -->
            <?php } ?>
            
        </div><!-- #comments -->
    <?php } ?>
    
    <?php
        $args=array(
            
'comment_field'        => '<p class="comment-form-comment"><label for="comment">' . $SMTheme->_( 'comment' ) . '</label><textarea id="comment" name="comment" cols="45" rows="8" aria-required="true"></textarea></p>',
            'must_log_in'          => '<p class="must-log-in">' .  sprintf( $SMTheme->_( 'mustbe' ).' <a href="%s">'.$SMTheme->_( 'loggedin' ).'</a> '.$SMTheme->_( 'topostcomment' ).'.' , wp_login_url( apply_filters( 'the_permalink', get_permalink( $post_id ) ) ) ) . '</p>',
            'logged_in_as'         => '<p class="logged-in-as">' . sprintf( __( $SMTheme->_( 'loggedinas' ).' <a href="%1$s">%2$s</a>. <a href="%3$s" title="Log out of this account">'.$SMTheme->_( 'logout' ).'</a>' ), admin_url( 'profile.php' ), $user_identity, wp_logout_url( apply_filters( 'the_permalink', get_permalink( $post_id ) ) ) ) . '</p>',
            'comment_notes_before' => '<p class="comment-notes">' . $SMTheme->_( 'comment_notes_before' ) . ( $req ? $required_text : '' ) . '</p>',            
            'id_form'              => 'commentform',
            'id_submit'            => 'submit',
            'title_reply'          => $SMTheme->_( 'leavereply' ),
            'title_reply_to'       => $SMTheme->_( 'leavereply' ),
            'cancel_reply_link'    => $SMTheme->_( 'cancelreply' ),
            'label_submit'         => $SMTheme->_( 'addcomment' )
        );
    comment_form($args);
    ?>


--------------------
Забанен за мошенничество
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Tollun
Tollun
сообщение 14.8.2014, 1:31; Ответить: Tollun
Сообщение #5


Старожил
******

Группа: Active User
Сообщений: 1595
Регистрация: 1.10.2009
Из: Хабаровск
Поблагодарили: 394 раза
Репутация:   66  


Код
'comment_field'        => '<p class="comment-form-comment"><label for="comment">' . $SMTheme->_( 'comment' ) . '</label><textarea id="comment" name="comment" cols="45" rows="8" aria-required="true"></textarea></p>',


Код
'comment_field'        => '<p class="comment-form-comment"><label for="comment">' . $SMTheme->_( 'comment' ) . '</label><input id="num" disabled value=""><textarea onkeyup="document.getElementById(\'num\').value = this.value.length" id="comment" name="comment" cols="45" rows="8" aria-required="true"></textarea></p>',


с вариантом от x64.

на jquery
Код
onkeyup="$(\'#num\').val($(this).val().length)"



Сообщение отредактировал Tollun - 14.8.2014, 1:38


--------------------


Поблагодарили: (1)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
mialpet
mialpet
сообщение 14.8.2014, 8:45; Ответить: mialpet
Сообщение #6


Частый гость
**

Группа: User
Сообщений: 75
Регистрация: 2.8.2014
Поблагодарили: 14 раз
Репутация:   5  


x64, Что? Я взял код с того сайта и засунул в разметку :) запустив в конце саму функцию.
Цитата(Чеснок @ 14.8.2014, 0:03) *
Оба варианта вырубили и форму комментирования и все комменты снесли

Что в разметке в браузере? Что говорит js отладчик? Я сам не работал с вп, но знаю что эти кмски любят фильтровать код и вопрос дошла ли разметка до браузера.

UPD
И самое главное у меня в коде js ковычки надо менять или экранировать (или с этим надо помочь?).

Сообщение отредактировал mialpet - 14.8.2014, 8:45
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Чеснок
Чеснок
Topic Starter сообщение 14.8.2014, 9:55; Ответить: Чеснок
Сообщение #7


мошенник
*******


Группа: Banned
Сообщений: 3623
Регистрация: 9.12.2009
Из: СССР ☭
Поблагодарили: 1520 раз
Репутация:   262  


Tollun, просто спаситель, уже в который раз выручает)) если кто страдает от php-шных и явашных траблов все сюда.

Заработало как надо, только инпут во всю длинну формы разросся (у меня фон сайта чёрный), но это даже к лучшему я в значение ему прописал описание того, что будет происходить - зачотно вышло.


--------------------
Забанен за мошенничество
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Нужны копирайтеры, 40 р. за 1000 символов.
13 contentos 1631 17.11.2017, 5:41
автор: Pitstops
Открытая тема (нет новых ответов) Ручной рерайт | Ссылка на источник | 25 руб. за 1000 символов
6 Lirinawi 2229 16.3.2017, 2:28
автор: Lirinawi
Открытая тема (нет новых ответов) Нужны райтеры, оплата 45 р/тысяча символов
16 centrashi 2476 25.2.2017, 12:44
автор: Вазелин
Открытая тема (нет новых ответов) Продаю 160 статей, размер от 2000 символов, копирайт.
Разные тематики, желательно все сразу
2 vminske 1385 29.12.2016, 15:16
автор: vminske
Открытая тема (нет новых ответов) Написать отзывы (4к символов)
без размещения
0 tube 602 22.12.2016, 19:15
автор: tube


 



RSS Текстовая версия Сейчас: 14.12.2017, 10:42
Дизайн