Foros del Web » Programando para Internet » Javascript »

Enviar formulario solo con escribir en el

Estas en el tema de Enviar formulario solo con escribir en el en el foro de Javascript en Foros del Web. Buenas foro vecino ;) Actualmente tengo un formulario en php el cual dependiendo lo que hay en un textarea, al darle al botón submit, aparece ...
  #1 (permalink)  
Antiguo 22/10/2014, 06:49
Avatar de rodrypaladin
Moderador
 
Fecha de Ingreso: abril-2010
Ubicación: Madrid
Mensajes: 2.127
Antigüedad: 14 años
Puntos: 468
Enviar formulario solo con escribir en el

Buenas foro vecino ;)

Actualmente tengo un formulario en php el cual dependiendo lo que hay en un textarea, al darle al botón submit, aparece un resultado u otro. Lo que me gustaría realizar es que cada vaya apareciendo el resultado a medida que voy escribiendo en el textarea, pero resulta que no tengo ni idea de javascript ¿ Como habría que realizarlo??

Un saludo y gracias.
__________________
No te olvides de dar +1 a quien te echa un cable ;)
  #2 (permalink)  
Antiguo 22/10/2014, 07:14
Avatar de garciasanchezdani  
Fecha de Ingreso: noviembre-2011
Mensajes: 429
Antigüedad: 12 años, 5 meses
Puntos: 51
Respuesta: Enviar formulario solo con escribir en el

Hola @rodrypaladin , puedes utilizar el evento .keyup() de jQuery, el cual cuando terminas de editar el textarea, captura la acción, y ya con Javascript muestras el resultado.
Mira un ejemplo práctico aquí: http://jsfiddle.net/YUtYu/238/

Saludos :)
__________________
Diseño Web Jaén
  #3 (permalink)  
Antiguo 22/10/2014, 07:49
Avatar de rodrypaladin
Moderador
 
Fecha de Ingreso: abril-2010
Ubicación: Madrid
Mensajes: 2.127
Antigüedad: 14 años
Puntos: 468
Respuesta: Enviar formulario solo con escribir en el

Pero tendría que volver a programar las formas en que cojo y opero los datos del textarea en javascript ? la cuestión es que lot engo todo hecho en php, muestro los resultados, los cojo, opero con ellos... solamente quiero que dichos resultados en php los muestre como he mencionado, cada vez que modifique el textarea se vayan modificando los resultados ( es decir, volviendo a enviar el formulario )
__________________
No te olvides de dar +1 a quien te echa un cable ;)
  #4 (permalink)  
Antiguo 22/10/2014, 07:52
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: Enviar formulario solo con escribir en el

te dejo un ejemplo de autocomplete para que te hagas una idea.
básicamente se trata de asignale el evento onkeyup al textarea para invocar una función que haga una petición ajax al archivo .php
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #5 (permalink)  
Antiguo 22/10/2014, 08:44
Avatar de rodrypaladin
Moderador
 
Fecha de Ingreso: abril-2010
Ubicación: Madrid
Mensajes: 2.127
Antigüedad: 14 años
Puntos: 468
Respuesta: Enviar formulario solo con escribir en el

IsaBelM gracias pero me da que hay demasiado código para lo que necesito y no consigo localizar lo que realmente necesito para añadirlo únicamente a mi textarea. Soy novato 100% en javascript no entiendo nada xd, solo se que tengo que añadir la funcion en un script, y añadirle al textarea la id y llamar a la funcion para ejecutarla en el textarea pero no consigo encontrar que es lo que tengo que añadir.
__________________
No te olvides de dar +1 a quien te echa un cable ;)
  #6 (permalink)  
Antiguo 22/10/2014, 12:28
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: Enviar formulario solo con escribir en el

te lo resumo
Cita:
window.onload = function() {
elTXTarea.addEventListener('keyup', function() {autoCompletaPulsacion(this)}, false); // asignamos el evento al textarea
}




function autoCompletaPulsacion(elTxtBox) {

var str = elTxtBox.value;

if (str.length <= 2) { // si el valor es menor a 3

return;
}

ajax = new XMLHttpRequest();

var url = 'SelecUsuarios.php?busca=' + str; // uri sobre la que se hará la petición

ajax.open('GET', url, true); // en este caso has de recorgelo la variable "busca" con $_GET[]. aunque se puede enviar por POST o PUT

autoCompletado.ajax.onreadystatechange = function() {

if (!ajax || ajax == null) { return; }

if (ajax.readyState == 4) {

if (ajax.status == 200) {

elDiv.innerHTML = ajax.responseText; // aquí imprimes la respuesta

autoCompletado.ajax.onreadystatechange = function(){};
ajax.abort();
ajax = null;

}
}
}

ajax.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
ajax.send(null);
return;

}
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #7 (permalink)  
Antiguo 22/10/2014, 12:50
Avatar de rodrypaladin
Moderador
 
Fecha de Ingreso: abril-2010
Ubicación: Madrid
Mensajes: 2.127
Antigüedad: 14 años
Puntos: 468
Respuesta: Enviar formulario solo con escribir en el

Si aunque me des el código la cuestión es que no se como implementarlo:

Este es mi textarea:

Código HTML:
Ver original
  1. <textarea style="resize: vertical;"class="form-control" id="output" name="texto" placeholder="Pega aquí las palabras que quieras contar" cols="30" rows="15"><?php if(isset($_POST['enviar'])) { echo $array_a_string; } ?></textarea>

Y este mi botón submit:

Código HTML:
Ver original
  1. <button type="submit" name="enviar" class="btn btn-primary" >Contar palabras y caracteres</button>

¿ Que tendría que poner donde quiero que muestre los resultados ? que obtengo por medio de php ?
__________________
No te olvides de dar +1 a quien te echa un cable ;)

Última edición por rodrypaladin; 22/10/2014 a las 12:56
  #8 (permalink)  
Antiguo 22/10/2014, 13:51
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: Enviar formulario solo con escribir en el

inicio.php
Cita:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="application/xhtml; charset=utf-8" />
<title></title>
<style type="text/css">

</style>
<script type="text/javascript">
var clase = (function() {

var ajax = new XMLHttpRequest();

function autoCompletaPulsacion(elTxtBox) {

var str = elTxtBox.value;

if (str.length <= 2) { // si el valor es menor a 3

return;
}

var uri = elTxtBox.parentNode.getAttribute('action') + '?busca=' + str;

ajax.open('GET', uri, true); // en este caso has de recorgelo la variable "busca" con $_GET[]. aunque se puede enviar por POST o PUT

ajax.onreadystatechange = function() {

if (!ajax || ajax == null) { return; }

if (ajax.readyState == 4) {

if (ajax.status == 200) {

document.getElementById('respuesta').innerHTML = ajax.responseText; // aquí imprimes la respuesta

ajax.onreadystatechange = function(){};
//ajax.abort();
//ajax = null;

}
}
}

ajax.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
ajax.send(null);
return;

}



window.onload = function() {
document.getElementById('output').addEventListener ('keyup', function() {autoCompletaPulsacion(this)}, false); // asignamos el evento al textarea
}


})();
</script>
</head>
<body>

<form action="pagina.php" method="post">
<textarea style="resize: vertical;"class="form-control" id="output" name="texto" placeholder="Pega aquí las palabras que quieras contar" cols="30" rows="15"><?php if(isset($_POST['enviar'])) { echo $array_a_string; } ?></textarea>
<button type="submit" name="enviar" class="btn btn-primary" >Contar palabras y caracteres</button>

</form>

<div id="respuesta"></div>
</body>
</html>
pongamos que el acction de tu form es pagina.php. con este código harás peticiones a pagina.php y esta retornará una respuesta

pagina.php
Cita:
<?php
echo $_GET['busca'];
?>
en este caso la respuesta será lo que escribas en el textarea. este respuesta se imprimirá en el bloque #respuesta de inicio.php
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}

Etiquetas: formulario, php
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:40.