2016-11-05 77 views
0

我試圖通過在textarea中向用戶顯示限制字符。但是這段代碼似乎不起作用。請幫我找到錯誤。Yii form 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> 

這個編碼工作完全適用於文本框而不是文本區域。

+0

你解決了你的問題嗎? –

回答

0

如果您不關心舊版瀏覽器,則不需要JavaScript。只需添加到textarea的()多了一個參數:

array('maxlength'=>10) 

不知道你所使用的Yii的版本,但它的Yii 1.x的 的更多信息,你可以在這裏找到的代碼假設:

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

+0

你好馬特,我被嘗試過,但它不起作用。我聽說textarea沒有maxlength值。我使用Yii 1.1 –

+0

Yii中沒有param「maxlength」,但是在html5中,它應該適用於大多數現代瀏覽器。你檢查過哪個瀏覽器?生成的html在textarea中的屬性是maxlength =「10」嗎? – Mat

0

請試試這個 看來,

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

在模型函數規則(),

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

此技巧僅適用於提交。我想在用戶輸入textarea時嘗試一下。 –

+0

不,'maxlength'=> 300,在用戶輸入textarea時也可以工作。請嘗試。 – Arya

+0

不,它不工作。 –

0

在您看來,使用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>