@model HelloWorldMvcApp.SampleViewModel
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Bootstrap 101 Template</title>
<link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css">
.field-validation-error {
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script src="//netdna.bootstrapcdn.com/bootstrap/3.1.1/js/bootstrap.min.js"></script>
<script src="//ajax.aspnetcdn.com/ajax/jquery.validate/1.11.1/jquery.validate.min.js"></script>
<script src="//ajax.aspnetcdn.com/ajax/mvc/4.0/jquery.validate.unobtrusive.min.js"></script>
<script language="javascript" type="text/javascript">
//creo el plugin cuentaCaracteres
jQuery.fn.cuentaCaracteres = function () {
//para cada uno de los elementos del objeto jQuery
//creo una variable elem con el elemento actual, suponemos un textarea
//alert (elem.val().length);
//creo un elemento DIV sobre la marcha
var contador = $('<div>Contador caracteres: ' + elem.val().length + '</div>');
//inserto el DIV después del elemento textarea
//guardo una referencia al elemento DIV en los datos del objeto jQuery
elem.data("campocontador", contador);
//creo un evento keyup para este elemento actual
//creo una variable elem con el elemento actual, suponemos un textarea
//recupero el objeto que tiene el elemento DIV contador asociado al textarea
var campocontador = elem.data("campocontador");
//modifico el texto del contador, para actualizarlo con el número de caracteres escritos
campocontador.text('Contador caracteres: ' + elem.val().length);
//siempre tengo que devolver this
$(document).ready(function () {
$("textarea").cuentaCaracteres();
<form id="form1" runat="server">
<textarea rows=5 cols=30 id="mitextarea">hola</textarea>
<textarea rows=5 cols=30 id="otrotextarea">Otra cuenta...</textarea>