Foros del Web » Programando para Internet » Javascript »

contador de palabras sencillo

Estas en el tema de contador de palabras sencillo en el foro de Javascript en Foros del Web. Buenas compis, hace mil que no toco javascript y juntado con que tenía un nivel bajo bajo pues ya se me ha olvidado todo. Estoy ...
  #1 (permalink)  
Antiguo 14/01/2016, 08:51
Avatar de rodrypaladin
Moderador
 
Fecha de Ingreso: abril-2010
Ubicación: Madrid
Mensajes: 2.127
Antigüedad: 14 años, 1 mes
Puntos: 468
contador de palabras sencillo

Buenas compis, hace mil que no toco javascript y juntado con que tenía un nivel bajo bajo pues ya se me ha olvidado todo.

Estoy intentando realizar un contador de palabras sencillo que cuente las palabras de un textarea, no quiero que tenga excepciones ni nada por el estilo ya que de momento no las necesito. Por el momento he realizado esto pero obviamente no funciona.

Esta es la función

Código Javascript:
Ver original
  1. <script type="text/javascript">
  2.   function palabras() {
  3.     textArea = document.getElementById("descripcion").value;
  4.     caracteres = textoArea.length;
  5.     textAreaDividido = texArea.split(" ");
  6.     palabras = textAreaDividido.length;
  7.  
  8.     document.getElementById('cont').innerHTML = palabras;
  9.   }
  10. </script>

aquí el código html donde está el textarea

Código HTML:
Ver original
  1. <textarea type="text" class="form-control" name="descripcion" id="descripcion" onkeyup="palabras();" placeholder="Descripción del artículo"></textarea>

y aquí la etiqueta p donde quiero que haga el innerHTML

Código HTML:
Ver original
  1. <div class="col-md-2">
  2.         <p id="cont"> </p>
  3.     </div>

Alguien sabría decirme donde fallo ? Un saludo a todos!!
__________________
No te olvides de dar +1 a quien te echa un cable ;)
  #2 (permalink)  
Antiguo 14/01/2016, 09:37
 
Fecha de Ingreso: junio-2011
Mensajes: 289
Antigüedad: 12 años, 10 meses
Puntos: 15
Respuesta: contador de palabras sencillo

Podrías usar JQUERY

Código HTML:
Ver original
  1. <textarea type="text" class="form-control" name="descripcion" id="descripcion" placeholder="Descripción del artículo"></textarea>
  2. <div class="col-md-2"><p id="cont"> </p></div>


Código Javascript:
Ver original
  1. $(document).ready(function(){
  2. $('#descripcion').keyup(function(){
  3.      var palabras = $(this).val().length;
  4.      $('#cont').text('Has escrito en total '+ palabras +' palabras');
  5.      });
  6. });


En tu código tienes mala la variable... derepente se llama textArea y en otras textoArea
  #3 (permalink)  
Antiguo 14/01/2016, 09:47
Avatar de rodrypaladin
Moderador
 
Fecha de Ingreso: abril-2010
Ubicación: Madrid
Mensajes: 2.127
Antigüedad: 14 años, 1 mes
Puntos: 468
Respuesta: contador de palabras sencillo

Aun solucionando el error de mi código sigue sin funcionar. No entiendo nada de jquery por eso prefiero no usarlo.

Alguna idea de por qué siguen sin ir ?
__________________
No te olvides de dar +1 a quien te echa un cable ;)
  #4 (permalink)  
Antiguo 14/01/2016, 09:52
 
Fecha de Ingreso: junio-2011
Mensajes: 289
Antigüedad: 12 años, 10 meses
Puntos: 15
Respuesta: contador de palabras sencillo

2 cosas

1.- Mi código esta mal era un contador de letras, con esto cuenta palabras xd
Código Javascript:
Ver original
  1. var palabras = $(this).val().split(/\b[\s,\.\-:;]*/).length;

2.- Después de cambiar la variable que esta mal, cámbiale el nombre a tu función, quizás se marea al crear un contador llamado palabras igual que una función llamada palarbas
  #5 (permalink)  
Antiguo 14/01/2016, 10:01
Avatar de rodrypaladin
Moderador
 
Fecha de Ingreso: abril-2010
Ubicación: Madrid
Mensajes: 2.127
Antigüedad: 14 años, 1 mes
Puntos: 468
Respuesta: contador de palabras sencillo

sigue sin ir y no se por qué la verdad...

Código Javascript:
Ver original
  1. function pal() {
  2.  
  3.     var textArea = document.getElementById("descripcion").value;
  4.     var caracteres = textArea.length;
  5.     var textAreaDividido = textArea.split(" ");
  6.     var palabras = textAreaDividido.length;
  7.  
  8.     document.getElementById('cont').innerHTML = "hay " + palabras + " palabras";
  9.   }

Código HTML:
Ver original
  1. <textarea type="text" class="form-control" name="descripcion" id="descripcion" onKeyUp="pal();" placeholder="Descripción del artículo"></textarea>

Código HTML:
Ver original
  1. <div class="col-md-3">
  2.         <p id="cont">0</p>
  3.     </div>
__________________
No te olvides de dar +1 a quien te echa un cable ;)

Última edición por rodrypaladin; 14/01/2016 a las 10:07
  #6 (permalink)  
Antiguo 14/01/2016, 10:11
 
Fecha de Ingreso: junio-2011
Mensajes: 289
Antigüedad: 12 años, 10 meses
Puntos: 15
Respuesta: contador de palabras sencillo

Ahora que lo editaste te funciona no?

Tenias un texArea en vez de textArea
  #7 (permalink)  
Antiguo 14/01/2016, 10:22
Avatar de rodrypaladin
Moderador
 
Fecha de Ingreso: abril-2010
Ubicación: Madrid
Mensajes: 2.127
Antigüedad: 14 años, 1 mes
Puntos: 468
Respuesta: contador de palabras sencillo

si pero aun así no funciona, pero no porque el codigo no funcione

si no por medio de un editor externo reemplaza el textarea por otro para mostrar un editor de texto..

si quito el editor si los cuenta pero con el editor no los cuenta.

Código HTML:
Ver original
  1. <textarea type="text" class="form-control" name="descripcion" id="descripcion" onkeyup="mostrar();" placeholder="Descripción del artículo"></textarea>
  2.                 <!--> editor CKeditor</!-->
  3.                 <script>
  4.                 // Replace the <textarea id="id"> with a CKEditor
  5.                 // instance, using default configuration.
  6.                 CKEDITOR.replace( 'descripcion' );
  7.             </script>

dentro de los archivos del editor es imposible mirar nada pues está todo el código junto linea tras linea y no puedo leer ni entender nada XD
__________________
No te olvides de dar +1 a quien te echa un cable ;)

Última edición por rodrypaladin; 14/01/2016 a las 10:27
  #8 (permalink)  
Antiguo 14/01/2016, 10:30
 
Fecha de Ingreso: junio-2011
Mensajes: 289
Antigüedad: 12 años, 10 meses
Puntos: 15
Respuesta: contador de palabras sencillo

Busca el ID del nuevo textarea con el inspeccionador de elementos de chrome y cámbialo en el código de js y ya
  #9 (permalink)  
Antiguo 14/01/2016, 10:43
Avatar de rodrypaladin
Moderador
 
Fecha de Ingreso: abril-2010
Ubicación: Madrid
Mensajes: 2.127
Antigüedad: 14 años, 1 mes
Puntos: 468
Respuesta: contador de palabras sencillo

No hay manera, me aparecen varios id de los divs dentro de la caja del editor, pero he probado con todos y nada, porque el textarea que me sigue apareciendo es el que yo hago, pero no me aparece otro que reemplace al otro en el código al inspeccionar elemento.
__________________
No te olvides de dar +1 a quien te echa un cable ;)
  #10 (permalink)  
Antiguo 14/01/2016, 10:59
 
Fecha de Ingreso: agosto-2015
Ubicación: En Carúpano
Mensajes: 49
Antigüedad: 8 años, 8 meses
Puntos: 12
Respuesta: contador de palabras sencillo

Código Javascript:
Ver original
  1. palabras = textArea.match(/[^\s]+/g).length
  #11 (permalink)  
Antiguo 14/01/2016, 11:18
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: contador de palabras sencillo

Realmente necesitas un editor como ese?? Quizás con esté te puede ser más que suficiente http://www.disegnocentell.com.ar/notas2.php?id=180
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #12 (permalink)  
Antiguo 14/01/2016, 12:48
Avatar de rodrypaladin
Moderador
 
Fecha de Ingreso: abril-2010
Ubicación: Madrid
Mensajes: 2.127
Antigüedad: 14 años, 1 mes
Puntos: 468
Respuesta: contador de palabras sencillo

Lo que me pide el cliente @IsabelM, son muy caprichosos XD

Quizás seleccionando el textarea pero no por id, si no por el name, tal vez el editor no reemplace también el name y pueda funcionar. ¿ Cómo sería de esa forma ?
__________________
No te olvides de dar +1 a quien te echa un cable ;)
  #13 (permalink)  
Antiguo 14/01/2016, 13:11
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: contador de palabras sencillo

Por el name http://librosweb.es/libro/javascript...elementos.html
Por el class https://developer.mozilla.org/es/doc.../querySelector

Puedes mostrar la línea de código con la que recibes el valor del campo cuando se envía ??
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}

Última edición por IsaBelM; 14/01/2016 a las 13:16
  #14 (permalink)  
Antiguo 14/01/2016, 13:31
Avatar de rodrypaladin
Moderador
 
Fecha de Ingreso: abril-2010
Ubicación: Madrid
Mensajes: 2.127
Antigüedad: 14 años, 1 mes
Puntos: 468
Respuesta: contador de palabras sencillo

Te refieres a esta ?

Código HTML:
Ver original
  1. <textarea type="text" class="form-control" name="descripcion" id="descripcion" onKeyUp="pal();" placeholder="Descripción del artículo"></textarea>

Pongo la funcion también

Código Javascript:
Ver original
  1. function mostrar() {
  2.             var texto = document.getElementById("descripcion").value;
  3.             var caracteres = texto.length;
  4.             var textoDividido = texto.split(" ");
  5.             var palabras = textoDividido.length;
  6.             document.getElementById("cont").innerHTML = palabras;
  7.   }

Donde se muestra

Código HTML:
Ver original
  1. <div class="col-md-3">
  2.         <p id="cont">0</p>
  3.     </div>

Funcionar funciona, el problema es cuando el editor sustituye al textarea que tengo yo, se ve que la id es distinta tal vez y por eso no pilla nada, es decir, si quito el editor funciona, pero dejándolo puesto no
__________________
No te olvides de dar +1 a quien te echa un cable ;)

Última edición por rodrypaladin; 14/01/2016 a las 13:44
  #15 (permalink)  
Antiguo 14/01/2016, 14:50
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: contador de palabras sencillo

No, me refería a el código del.lado del servidor
Cita:
$_post["nombre"]
La parte importante es la variable "nombre". De éste modo tienes la referencia de como accesar al.elemento
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #16 (permalink)  
Antiguo 15/01/2016, 07:13
Avatar de rodrypaladin
Moderador
 
Fecha de Ingreso: abril-2010
Ubicación: Madrid
Mensajes: 2.127
Antigüedad: 14 años, 1 mes
Puntos: 468
Respuesta: contador de palabras sencillo

Si bueno por php supongo que si se podría pero tendría que enviar primero el formulario, por lo que no se actualizaría conforme vas escribiendo en el textarea.
__________________
No te olvides de dar +1 a quien te echa un cable ;)
  #17 (permalink)  
Antiguo 15/01/2016, 08:22
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: contador de palabras sencillo

no, a ver si me explico. cuando envías el formularios, recibes unos parámetros. estos parámetros a su vez contienen valores y estos valores son guardados en una bd. pues lo que te interesa saber es el nombre del parámetro. si envías el formulario a un archivo .php, la manera de recogerlo es con
Cita:
$_POST['nombre']
$_GET['nombre']
etc...
por ende, si enviaras el formulario y quisieras recoger el valor del textarea, sería
Cita:
$_POST['descripcion']
$_GET['descripcion']
etc....
pero al no enviar el textarea ...... es lo que has de resolver

EDITO
he tenido algo de tiempo para leer un poco la documentación del editor y esto es lo que he encontrado. lee la segunda sección
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}

Última edición por IsaBelM; 15/01/2016 a las 08:48
  #18 (permalink)  
Antiguo 15/01/2016, 12:50
Avatar de rodrypaladin
Moderador
 
Fecha de Ingreso: abril-2010
Ubicación: Madrid
Mensajes: 2.127
Antigüedad: 14 años, 1 mes
Puntos: 468
Respuesta: contador de palabras sencillo

Tal vez me haya explicado mal, pero el formulario no se envia en ningun momento, entonces $_POST o $_GET no llegan a existir.

Lo que intentaba es que conforme vaya escribiendo en el textarea en una etiqueta <p> vaya apareciendo el total de palabras, pero sin enviar el formulario antes, por eso había pensado en javascript.

Si mando el formulario si que es verdad que podría trabajar con $_POST["descripcion"], pero tendría que mandar el formulario ( darle a submit ) cada vez que quiera contar las palabras del textarea

No entiendo muy bien la documentación ni aun traduciendola XD:

Cita:
Tenga en cuenta que el reemplazado <textarea> se actualiza automáticamente por CKEditor recta antes de la presentación. Si usted necesita para acceder a la <textarea> valor mediante programación con JavaScript (por ejemplo, en el controlador de onsubmit para validar los datos introducidos), existe la posibilidad de que el <textarea> elemento todavía almacenar los datos originales. Con el fin de actualizar el valor de reemplazado <textarea> utilizar el método editor.updateElement ().

En casos raros puede ocurrir que la configuración del servidor o aplicación rechazará presentada contenido HTML si no se codifica primero (por ejemplo, ASP.NET ValidateRequest). En tal caso, seleccione la opción config.htmlEncodeOutput.
Creo que eso habla de recoger los datos antes de sustituirlo, y sería al contrario, necesito los datos de dentro del textarea pero una vez ya estoy trabajando con el CKeditor y ya se ha sustituido
__________________
No te olvides de dar +1 a quien te echa un cable ;)
  #19 (permalink)  
Antiguo 16/01/2016, 08:41
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: contador de palabras sencillo

era la siguiente línea
Cita:
If you need to get the actual data from CKEditor at any moment using JavaScript, use the editor.getData() method as described above.
Cita:
si necesitas obtener los datos reales de CKEditor en cualquier momento usando javascript, utiliza el método editor.getData() como se ha descrito anteriormente
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #20 (permalink)  
Antiguo 16/01/2016, 11:42
Avatar de rodrypaladin
Moderador
 
Fecha de Ingreso: abril-2010
Ubicación: Madrid
Mensajes: 2.127
Antigüedad: 14 años, 1 mes
Puntos: 468
Respuesta: contador de palabras sencillo

Código Javascript:
Ver original
  1. getData( internal ) : String
  2.  
  3. Gets the editor data. The data will be in "raw" format. It is the same data that is posted by the editor.
  4.  
  5. if ( CKEDITOR.instances.editor1.getData() == '' )
  6.     alert( 'There is no data available.' );

Ese ejemplo me da. Yo quiero meter el contenido en una variable pero no consigo hacerlo funcionar, algo hago mal con la funcion xd
__________________
No te olvides de dar +1 a quien te echa un cable ;)
  #21 (permalink)  
Antiguo 16/01/2016, 13:54
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: contador de palabras sencillo

Te refieres a esto?? Según dice obtienes los datos en bruto
Cita:

var datos = CKEDITOR.instances.editor1.getData();
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #22 (permalink)  
Antiguo 16/01/2016, 15:24
Avatar de rodrypaladin
Moderador
 
Fecha de Ingreso: abril-2010
Ubicación: Madrid
Mensajes: 2.127
Antigüedad: 14 años, 1 mes
Puntos: 468
Respuesta: contador de palabras sencillo

Pues no funciona xd algo nos faltará por ahí jeje a ver si indago algo...
__________________
No te olvides de dar +1 a quien te echa un cable ;)

Etiquetas: contador, funcion, html, palabras, sencillo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:51.