Yii格式文本区域字符限制


Yii form textarea character limit

我试图通过在文本区显示给用户来实现限制字符。但是这个代码片段似乎不起作用。请帮我找出错误。

 <?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。

如果您不关心旧浏览器,则不需要javascript。只需在textArea()中添加一个参数:

array('maxlength'=>10)

不确定您使用的是哪个版本的Yii,但从代码中假设它是Yii 1.x您可以在这里找到更多信息:

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

请尝试一下在视图中,

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

在模型函数rules()中,

 array('Details', 'safe'),
 array('Details', 'length', 'max' => 300),

在您的视图中,使用JQuery,您可以尝试使用这个或与您的脚本进行比较。主要的变化是使用JQuery id选择器代替类选择器。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>