Cargando

Ir a contenido

X

Activar / Desactivar botones a partir de 1 textarea (número de carácteres)





  AUTOR PREGUNTA

Publicado 22 abril 2014 - 12:56
Buenos días,

Tengo 1 textarea con 1 botón, pero quiero ampliarlo a 2 (o más). El textarea cuenta los carácteres (en 1 input):
- http://www.solvetic....entras-escribo/

En vez de recoger el valor en 1 input, quiero hacer esto (debajo del textarea):
- Si el número de carácteres es 0 o "" activar 1 botón (Exportar).
- Si el número de carácteres es superior a 0, activar otro botón (Exportar).

Dicho de otra forma, tengo 2 botones Submit:
- Importar: Activo si textarea es 0 o null.
- Exportar: Activo si textarea no está vacía. Al hacer Submit tengo que recoger (getParameter) el texto, No el número de carácteres (pero por curiosidad también me gustaría saberlo jejejejeje).

Relacionado un poco con esto:
1). En Java (fuera del formulario) se puede hacer esto:
Si el usuario ha clicado el botón 'Importar' ...
IMPORTAR
Si el usuario ha clicado el botón 'Exportar' ...
EXPORTAR

Así no tendria que crear nuevos ficheros JSP con código JAVA (acciones redirigidas).

Gracias anticipadas,


PepBR
  • 3 personas más tuvieron esta duda Yo también
  • Volver arriba


 

Publicado 22 abril 2014 - 16:49
Te dejo este ejemplo donde te dicen que código necesitas para añadir más de un botón a un textarea, sería con 2 paneles, uno para el textarea y otro para los botones que quieras añadir, ahí tienes código:

Por favor Identificate o Registrate para poder ver este contenido



 

Publicado 22 abril 2014 - 16:51
Aquí tienes como poner 2 botones en un textarea (Java info)

Por favor Identificate o Registrate para poder ver este contenido



   AUTOR PREGUNTA

Publicado 22 abril 2014 - 19:17
Buenas tardes,

[color=#ff0000]Charly[/color]: Parto de esto (fichero JSP):

FORM:
TextArea
Submit name="Importar"
Submit name="Exportar"
FIN_FORM

En este enlace:
-

Por favor Identificate o Registrate para poder ver este contenido


Le falta el TextArea. Y la solución es Javascript (lo que busco es Java, para hacer los if's debajo del formulario (1 por botón)).

Aquí:
-

Por favor Identificate o Registrate para poder ver este contenido


es 1 input por formulario (yo 1 formulario con 2 inputs (mínimo).

[color=#ff0000]Alberto Serrano[/color]: Busco JSP (formulario con 2 inputs (mínimo)) y Java.

El formulario, textarea y los botones están en 1 fichero JSP,


PepBR

 

Publicado 22 abril 2014 - 23:57
Para lo que quieres hacer no necesitas Java pero sí Javascript porque necesitas ejecutar eventos del lado del cliente, en este caso de tu formulario, quedaría de la siguiente forma, te lo explico por partes:

1- Primero obtienes el valor de tu textarea:

var campoarea = document.getElementById("miCampotarea").value;

2- Luego condicionas con if:

if(campoarea==0) {
		    document.getElementById('boton1').style.visibility = 'visible';
	    } else if(campoarea>0){
		    document.getElementById('togglee').style.visibility = 'visible';

3- Importante mencionar que tus campos deben estar hidden por defecto:

<input type="button" id="boton1" value="boton1" onclick="action();" style="visibility:hidden;" />
<input type="button" id="boton2" value="boton2" onclick="action();" style="visibility:hidden;" />

Al final debería ser algo como esto:

<script type='Javascript'>
    function verificar() {
var campoarea = document.getElementById("miCampotarea").value;
if(campoarea==0) {
		    document.getElementById('boton1').style.visibility = 'visible';
	    } else if(campoarea>0){
		    document.getElementById('togglee').style.visibility = 'visible';

    }
}
</script>

<input type="button" id="boton1" value="boton1" onclick="verificar();" style="visibility:hidden;" />
<input type="button" id="boton2" value="boton2" onclick="verificar();" style="visibility:hidden;" />


   AUTOR PREGUNTA

Publicado 24 abril 2014 - 11:58
Buenos días,

[color=#ff0000]Joel7[/color]: Gracias, creo que es esto pero:
1. Nunca verifico. :-O
2. Mi getParameter siempre es null. Tendría que ser "LoQueSea" (texto).
Algo me falta en el textarea (o en otro sitio) y no lo veo.

Dejo mi código (cuerpo.jsp):

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Cuerpo</title>
<script type="text/javascript">
function getText(){
document.getElementById("prueba").value;
}
function verificar(){
var campoarea = document.getElementById("prueba").value;
out.println("TextArea: "+campoarea);
if(campoarea==0){
	 document.getElementById('Import').style.visibility = 'visible';
} else if (campoarea>0){
document.getElementById('Export1').style.visibility = 'visible';
}
}
</script>
</head>
<body>
<form action="#" method="post">
<textarea name="prueba" rows="15" cols="1025" id="prueba">Escriu</textarea>
<input type="button" name="Import" value="Importar" id="Import" onclick="verificar();" style="visibility:hidden"/>
<input type="button" name="Export1" value="Exportar a TXT" id="Export1" onclick="verificar();" style="visibility:hidden"/>
</form>
<%=request.getParameter("Export1") %>
</body>
</html>

Otra pregunta:
1. ¿Suponiendo que cuando campoarea es superior a 0 tuviera 2 botones activos (Export1 y Export2), desde Java puedo diferenciar entre Exportar1 y Exportar2?

Gracias de nuevo,


PepBR

   AUTOR PREGUNTA

Publicado 25 abril 2014 - 12:46
Buenos días.

Partiendo de la siguiente web:
-

Por favor Identificate o Registrate para poder ver este contenido


he probado sin lo que me dice joel7 (comentado), y entonces sí funciona el getParameter, apareciendo lógicamente el botón.

cuerpo2.jsp:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>cuerpo2.jsp</title>
<script type="text/javascript">
function verificar(){
var campoarea = document.getElementById("textarea1").value;
out.println("TextArea: "+campoarea);
if(campoarea==0){
	 // Ningún botón visible, por ahora.
} else if (campoarea>0){
document.getElementById('Accept').style.visibility = 'visible';
}
}
</script>
</head>
<body>
<FORM ACTION="cuerpo2.jsp" METHOD="POST">
		 Please enter your text:
		 <BR>
		 <TEXTAREA NAME="textarea1" ROWS="5"></TEXTAREA>
		 <BR>
		 <INPUT TYPE="submit" VALUE="Aceptar" id="Accept">
		 <!-- TYPE="button" --!>
		 <!-- onclick="verificar();submit();" style="visibility:hidden" -->	
	 </FORM>
		 <%
		 try{
		 StringBuffer text = new StringBuffer(request.getParameter("textarea1"));
		 int loc = (new String(text)).indexOf('\n');
		 while(loc > 0){
			 text.replace(loc, loc+1, "<BR>");
			 loc = (new String(text)).indexOf('\n');
		 }
		 out.println(text);
		 }catch (Exception e){}%>
</body>
</html>

Es lo mismo:
type="button" onclick="sumit()
que:
type="submit"

Con el código de Joel7 no aparece ningún botón ni nada del textarea. ¿Alguien ve el por qué? Gracias,


PepBR

 

Publicado 25 abril 2014 - 15:09
El código de:
onclick="verificar();
debe ir en un botón para accionar lo que esté pasando, te recomiendo que agregues un tercer botón que lo llames verificar y lo presiones para chequear lo que está pasando con tu textarea, dejalo así:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Cuerpo</title>
<script type="text/javascript">
function getText(){
document.getElementById("prueba").value;
}
function verificar(){
var campoarea = document.getElementById("prueba").value;
out.println("TextArea: "+campoarea);
if(campoarea==0){
  document.getElementById('Import').style.visibility = 'visible';
} else if (campoarea>0){
document.getElementById('Export1').style.visibility = 'visible';
}
}
</script>
</head>
<body>
<form action="#" method="post">
<textarea name="prueba" rows="15" cols="1025" id="prueba">Escriu</textarea>
<input type="button" name="Import" value="Importar" id="Import"  style="visibility:hidden"/>
<input type="button" name="Export1" value="Exportar a TXT" id="Export1" style="visibility:hidden"/>
<input type="button" name="verificar" value="Verificar" id="verificar" onclick="verificar();"/>
</form>
<%=request.getParameter("Export1") %>
</body>
</html>

Te doy una recomendación a nivel técnico viendo un poco tus preguntas y de la manera como las has hecho, es que le eches un ojo a las cosas básicas como HTML, un lenguaje menos complicado como PHP y Javascript, esto para que no te des tantos tropiezos con cosas más avanzadas como JSP. Es mi recomendación.

Saludos.

   AUTOR PREGUNTA

Publicado 02 mayo 2014 - 09:42
Buenos días,

Joel7: He elegido JSP porque engloba distintos lenguajes, aunque sólo utilice Javascript y Java (esto hace que cualquiera pueda mejorarlo, si lo ve necesario). En el último mensaje haces el verificar() con 1 botón visible. En tu primer mensaje (en este post) no (aunque también lo haces en 1 botón), y he seguido probando, hasta que lo he resuelto (proyecto PFC pospuesto ya hasta septiembre): :-)

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>cuerpo2.jsp</title>
<script type="text/javascript">
// Fuente: http://pallieter.org/Projects/insertTab/
function insertTab(o, e)
{
var kC = e.keyCode ? e.keyCode : e.charCode ? e.charCode : e.which;
if (kC == 9 && !e.shiftKey && !e.ctrlKey && !e.altKey)
{
var oS = o.scrollTop;
if (o.setSelectionRange)
{
var sS = o.selectionstart;
var sE = o.selectionend;
o.value = o.value.substring(0, sS) + "\t" + o.value.substr(sE);
o.setSelectionRange(sS + 1, sS + 1);
o.focus();
}
else if (o.createTextRange)
{
document.selection.createRange().text = "\t";
e.returnValue = false;
}
o.scrollTop = oS;
if (e.preventDefault)
{
e.preventDefault();
}
return false;
}
return true;
}
function verificar(){
var campoarea = document.getElementById('textarea1').value.length;
// out.println("TextArea: "+campoarea);
if (campoarea==null){}
if(campoarea==0){
document.getElementById("Cero").style.visibility = "visible";
document.getElementById("Opcion1").style.visibility = "hidden";
document.getElementById("Opcion2").style.visibility = "hidden";
} if (campoarea>0){
document.getElementById("Cero").style.visibility = "hidden";
document.getElementById("Opcion1").style.visibility = "visible";
document.getElementById("Opcion2").style.visibility = "visible";
}
}
</script>
</head>
<body>
<FORM ACTION="#" METHOD="POST">
		 <label>
		 <TEXTAREA NAME="textarea1" ROWS="15" COLS="1025" id="textarea1" onkeyup="verificar()" onkeydown="insertTab(this,event); verificar()"></TEXTAREA>
		 </label>
		 <br>
		 <label>
		 <INPUT TYPE="submit" VALUE="Cero" name="0" id="Cero" style="visibility:hidden">
		 </label>
		 <label>
		 <INPUT TYPE="submit" VALUE="Opción 1" name="1" id="Opcion1" style="visibility:hidden">
		 </label>
		 <label>
		 <INPUT TYPE="submit" VALUE="Opción 2" name="2" id="Opcion2" style="visibility:hidden">
		 </label>
		 <!-- TYPE="button" --!>
		 <!-- onclick="verificar();submit();" style="visibility:hidden" -->	
	 </FORM>
		 <%
		 try{
		 // Fuente: http://olgacarreras.blogspot.com.es/2007/02/formulario-con-varios-botones.html
		 if(request.getParameter("0")!=null){
		 out.println("CERO"); // Submit en el botón 0 (name).
		 }else if(request.getParameter("1")!=null){
		 out.println("OPCIÓN 1"); // Submit en el botón 1 (name).
		 }else if(request.getParameter("2")!=null){
		 out.println("OPCIÓN 2"); // Submit en el botón 2 (name).
		 }
		 // Cualquier botón recoge algo del textarea (no null):
		 StringBuffer text = new StringBuffer(request.getParameter("textarea1"));
		 // Se almacena en pru.txt:
		 // Fuente: http://www.coderanch.com/t/391312/java/java/StringBuffer-File
		 %>
		 <%@ page import="java.io.*" %>
		 <%BufferedWriter fichero= new BufferedWriter(new FileWriter("pru.txt"));
		 fichero.write(text.toString());
		 fichero.flush();
		 fichero.close();
		 // Sale por el JSP el contenido del textarea:
		 int loc = (new String(text)).indexOf('\n');
		 while(loc > 0){
			 text.replace(loc, loc+1, "<BR>");
			 loc = (new String(text)).indexOf('\n');
		 }
		 out.println("<pre>"+text+"</pre>");
		 }catch (Exception e){}%>
</body>
</html>

Es el textarea quien hace verificar() constantemente, no 1 o 2 botones (Joel7 :-P). Por mi parte este post ya está RESUELTO (ver el primer post), :-)


PepBR


X