Yii форма textarea ограничение символов

Я пытаюсь реализовать ограничение символа, показывая пользователю в textarea. Но этот фрагмент кода, кажется, не работает. Пожалуйста, помогите мне найти ошибку.

 <?php echo $form->textArea($model, 'tr_summary', array('rows' => 2, 'cols' => 50, 'class' => 'form-control fldRequired')); ?>
<div class="errorMessage Tour_tr_summary"></div>

<script type="text/javascript">

  $(".fldRequired").keyup(function(e) {
  fldId = $(this).attr('id');
  if(fldId == 'Tour_tr_summary' && $(this).val().length > 20) {
    $('.'+fldId).html( 'Maximum 20 characters allowed');
    e.preventDefault();
  }
 });

 </script>

это кодирование отлично работает для textfield, но не textarea.

3 ответа

  1. Никакой javascript не нужен, если вы не заботитесь о старых браузерах. Просто добавьте в textArea () еще один параметр:

    array('maxlength'=>10)
    

    Не уверен, какую версию Yii вы используете, но предполагая из кода, что это Yii 1.икс
    Более подробную информацию вы можете найти здесь:

    http://www.w3schools.com/tags/att_textarea_maxlength.asp
    http://www.yiiframework.com/doc/api/1.1/CActiveForm#textArea-detail

  2. Пожалуйста, попробуйте это
    в виду,

    <?php echo $form->textArea($model, 'Details', array('maxlength' => 300, 'rows' => 6, 'cols' => 50)); ?>
    

    В правилах функции модели(),

     array('Details', 'safe'),
     array('Details', 'length', 'max' => 300),
    
  3. На ваш взгляд, с JQuery вы можете попробовать с этим или сравнить с вашим сценарием. Основное изменение — использовать jQuery id selector вместо class selector. Modelnameваш класс модели и fieldnameваш атрибут:

    <script type='text/javascript'>
    
    $('#Modelname_fieldname').keyup(function() {
            characterlimit();
    });
    
    function characterlimit()
    {
            var text_max = 100; // Desired Character Limit
            var text_length = $('#Modelname_fieldname').val().length;
            var text_remaining = text_max - text_length;
    
            if(text_remaining == 0)
            {
                $('#Modelname_fieldname').addClass('error');  
            }
            else
            {
                $('#Modelname_fieldname').removeClass('error');       
            }    
    }
    </script>