Necesito ayuda para restringir la escritura en campos según la información de otros en ASP

Tengo un formulario con dos checkbox para la Forma de Pago (Contrareembolso o Tarjeta) y a continuación unos textfields para el número de tarjeta y caducidad de esta. Lo que quiero es, que al chequear Contrareembolso, no me deje poner nada en la casilla de la tarjeta y la de caducidad. Y que si chequea Pago con Tarjeta ya deje escribir en ella. O eso, o que no aparezcan esos 2 textfields a no ser que se chequee la opción de Tarjeta.
No se si me he explicado bien, de todas formas aquí te envió el código del form para ver sime puedes ayudar:
<FORM onsubmit="return validacion(this)" name="form1" action="GrabarEnvio.asp" method="post">
<INPUT type="hidden" name="CodCliente1" value="<%=(REQUEST.QUERYSTRING("Pass"))%>">
<TABLE width="90%" border="1" cellspacing="0" cellpadding="0" align="center" height="352" bgcolor="#CCCCCC"">
<TR bgcolor="#000000">
<TD height="50" colspan="2" align="center"><font face="Comic Sans MS" size="5"><b><i><font size="6">DATOS
DE ENVIO</font></i></b></font></TD>
</TR>
<TR>
<TD align="right" width="37%" height="36">
<DIV align="right"><font color="#000000" size="3"><i><font face="Comic Sans MS">Dirección
de envío: </font></i></font></DIV>
</TD>
<TD width="63%" height="36"> <font color="#000000" size="3"><i><b><font face="Comic Sans MS">
<INPUT type="text" name="EDireccion" size="40">
</font></b></i></font></TD>
</TR>
<TR>
<TD align="right" width="37%" height="39">
<DIV align="right"></DIV>
<font color="#000000" size="3"><i><b><font face="Comic Sans MS">
</font></b></i></font>
<DIV align="right"><font color="#000000" size="3"><i><font face="Comic Sans MS">Localidad:
</font></i></font></DIV>
<font color="#000000" size="3"><i><b><font face="Comic Sans MS">
</font></b></i></font></TD>
<TD width="63%" height="39"><font color="#000000" size="3"><i><b><font face="Comic Sans MS">
<input type="text" name="ELocalidad" size="20">
</font></b><font color="#000000" size="3"><i><font face="Comic Sans MS">CP:</font></i></font><font face="Comic Sans MS"></font><b><font face="Comic Sans MS">
</font><font color="#000000" size="3"><i><b><font face="Comic Sans MS">
<input type="text" name="ECP" size="5" maxlength="5">
</font></b></i></font></b></i></font></TD>
</TR>
<TR>
<TD height="34" align="right" width="37%">
<DIV align="right"><font color="#000000" size="3"><i><font face="Comic Sans MS">Provincia:
</font></i></font></DIV>
</TD>
<TD height="34" width="63%"> <font color="#000000" size="3"><i><b><font face="Comic Sans MS">
<SELECT name="Codprovincia">
<%
sql="SELECT * FROM Provincias ORDER BY Provincia"
SET rsAux=conn.EXECUTE(sql)
DO WHILE NOT rsAux.EOF
%>
<OPTION value="<%=rsAux("CodProvincia")%>"><%=rsAux("Provincia")%>
</OPTION>
<%
rsAux.MOVENEXT
LOOP
rsAux.CLOSE
SET rsAux=NOTHING
%>
</SELECT>
</font></b></i></font></TD>
</TR>
<TR>
<TD align="right" width="37%" height="39">
<DIV align="right"><font color="#000000" size="3"><i><font face="Comic Sans MS">Teléfono
de Contacto: </font></i></font></DIV>
</TD>
<TD width="63%" height="39"> <font color="#000000" size="3"><i><b><font color="#000000" size="3"><i><b><font face="Comic Sans MS">
<input type="text" name="ETelefono" size="15" maxlength="12">
</font></b></i></font><font face="Comic Sans MS"> </font></b></i></font></TD>
</TR>
<TR>
<TD align="right" width="37%">
<DIV align="right"><font color="#000000" size="3"><i><font color="#000000" size="3"><i><font face="Comic Sans MS">Forma
de Pago: </font></i></font></i></font></DIV>
</TD>
<TD height="30">
<p><font color="#000000" size="3"><i><b><font color="#000000" size="3"><i><b><font face="Comic Sans MS">
<input type="radio" name="FPago" value="1" checked>
</font></b></i></font></b><font...
1

1 Respuesta

7.325 pts.
Opté por deshabilitar los campos de tarjeta y caducidad... los input=text tienen una propiedad llamada disabled que por defecto tiene el valor false. Si queremos que no se pueda escribir en el campo y que tampoco genere eventos, entonces ponemos esa propiedad en true.
¿Cómo? Con JavaScript
Primero... tenemos que hacer que cuando se hagan click en los options (contrareembolso y tarjeta) estos llamen a alguna función, para cambiar los estados...
Tus campos quedarían así, y abajo pongo el código Javascript...
<input type="radio" name="FPago" OnClick="javascript:fnc_cmcampos(0);" value="1" checked>Contrareembolso
<input type="radio" name="FPago" OnClick="javascript:fnc_cmcampos(1);" value="2">Tarjeta de Crédito
<!-- Javascript -->
<script language="JavaScript">
function fnc_cmcampos(valor){
if(valor==0){
//tu formulario se llama form1
//aquí deshabilito los dos campos en cuestión
document.form1.NTarjeta.disabled = false;
document.form1.Caduca.disabled = false;
} else {
//acá los habilito
document.form1.NTarjeta.disabled = true;
document.form1.Caduca.disabled = true;
}
}
//junto con la propiedad disabled
//también puedes averiguar acerca de readOnly
//el cual no deshabilita los campos pero no deja editarlos.
//
//para hacer que los campos desaparezcan, debes
//cambiar el style del campo...
//por ejemplo:
//document.form1.NTarjeta.style.display = none; //no se verá
//document.form1.NTarjeta.style.display = inline; //volverá a verse
//
//Bueno, ahí ve tu, cual elijes, yo te puse el
//ejemplo del disabled que es el que yo ocuparía.
</script>
De todas formas, pa todas estas dudas de propiedades, puedes visitar la MSDN de Microsoft acerca de los elementos HTML
http://msdn.microsoft.com/workshop/author/html/reference/elements.asp
Ahí busca los input, textarea y etc... está todo.
function fnc_cmcampos(valor){
if(valor==0){
//tu formulario se llama form1
//aquí deshabilito los dos campos en cuestión
document.form1.NTarjeta.disabled = false;
document.form1.Caduca.disabled = false;
} else {
//acá los habilito
document.form1.NTarjeta.disabled = true;
document.form1.Caduca.disabled = true;
}
}
lo hice mal, los false y los true están al revez. disculpame...
donde dice false, debe decir true. y donde dice true debe decir false...
eso... jejeje sorry.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas