Foros del Web » Programando para Internet » Javascript »

Form con 2 posibles campos iguales (getElementByID)

Estas en el tema de Form con 2 posibles campos iguales (getElementByID) en el foro de Javascript en Foros del Web. Hola a todos, tengo un pequeño problema con un formario, muy simple que debe sacar dos campos con el mismo nombre (cliente) y mantener uno ...
  #1 (permalink)  
Antiguo 16/11/2010, 04:46
Avatar de tatoman  
Fecha de Ingreso: abril-2002
Ubicación: Madrid
Mensajes: 215
Antigüedad: 22 años, 7 meses
Puntos: 1
Form con 2 posibles campos iguales (getElementByID)

Hola a todos, tengo un pequeño problema con un formario, muy simple que debe sacar dos campos con el mismo nombre (cliente) y mantener uno de los dos desactivado si es que se rellena el otro y viceversa.

El primer campo es un SELECT que despliega una lista de clientes, y si el cliente que se quiere seleccionar no aparece en dicha lista, se marca un Checkbox que habilita un segundo campo de Texto para que el usuario introduzca manualmente el nombre del cliente.

Cuando se envia el formulario, los datos contenidos en el campo "cliente" actualizan una BBDD.

Pues no consigo hacerlo, tengo este codigo:

<SCRIPT LANGUAGE="JavaScript">
function DisBox()
{
var cliente,clienteb
if(document.form1.disb.checked)
{
document.form1.getElementByID(cliente).blur()
document.form1.getElementByID(cliente).disabled=tr ue
document.form1.getElementByID(clienteb).disabled=f alse
}
else
{
document.form1.getElementByID(cliente).disabled=fa lse
document.form1.getElementByID(clienteb).disabled=t rue
}
}
</SCRIPT>

<form action="insertacliente.asp" method="POST" name="form1">
<table width="510" align="center">
<tr valign="baseline">
<td width="130" align="right" valign="top" nowrap>Cliente:</td>
<td valign="top">

<select name="cliente" id="cliente" onFocus="DisBox()">
<option value="cliente 1">cliente 1</option>
<option value="cliente 2">cliente 2</option>
<option value="cliente3">cliente 3</option>
</select>
</td>
<td width="1" rowspan="2" valign="top"><div align="left"></div></td>
</tr>
<tr valign="baseline">
<td align="right" valign="top" nowrap>Cliente no Listado</td>
<td valign="top">
<INPUT TYPE="checkbox" NAME="disb" onClick="DisBox()">
<input type="text" name="cliente" id="clienteb" />
</td>
</tr>
<tr valign="baseline">
<td align="right" valign="top" nowrap>&nbsp;</td>
<td valign="top">

<div align="left">
<input type="submit" value="Insertar Cliente">
</div></td>
<td width="1" valign="top"><div align="left"></div></td>
</tr>
</table>
</form>

//// Pues nada, me dice que el objeto no acepta la propiedad y me estoy volviendo loco... ¿alguna ayudita???

Thnks ;)
__________________
Elias Frances
Webmaster (ultimos proyectos) de:
www.internet20.es

Última edición por tatoman; 16/11/2010 a las 04:56
  #2 (permalink)  
Antiguo 16/11/2010, 05:13
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 16 años, 5 meses
Puntos: 1012
Respuesta: Form con 2 posibles campos iguales (getElementByID)

antes de nada ha de corregir esto
Cita:
document.form1.getElementByID(cliente).blur()
.......
tienes dos opciones de accesar al control, usando su nombre o su id, pero no puedes usar ambos. recuerda que si lo haces por su id, será getElementById y no getElementByID
  #3 (permalink)  
Antiguo 16/11/2010, 05:51
Avatar de tatoman  
Fecha de Ingreso: abril-2002
Ubicación: Madrid
Mensajes: 215
Antigüedad: 22 años, 7 meses
Puntos: 1
Respuesta: Form con 2 posibles campos iguales (getElementByID)

Para evitar confusiones he modificado las Id del Select y del Texarea como a y b y he modificado el script siguiendo las directivas que indicais:

<SCRIPT LANGUAGE="JavaScript">
function DisBox()
{
if(document.form1.disb.checked)
{
document.getElementById('a').disabled=true;
document.getElementById('b').disabled=false;
}
else
{
document.getElementById('a').disabled=false;
document.getElementById('b').disabled=true;
}
}
</SCRIPT>

Pero sigue sin funcionar, el objeto no acepta la propiedad...

Tambien he probado con:

<SCRIPT LANGUAGE="JavaScript">
function DisBox()
{

if(document.form1.disb.checked)
{
document.forms['form1'].getElementById('a').disabled = true;
document.forms['form1'].getElementById('b').disabled = false;
}
else
{
document.forms['form1'].getElementById('a').disabled = false;
document.forms['form1'].getElementById('b').disabled = true;
}
}
</SCRIPT>

Con el mismo resultado...
__________________
Elias Frances
Webmaster (ultimos proyectos) de:
www.internet20.es
  #4 (permalink)  
Antiguo 16/11/2010, 06:20
Avatar de tatoman  
Fecha de Ingreso: abril-2002
Ubicación: Madrid
Mensajes: 215
Antigüedad: 22 años, 7 meses
Puntos: 1
Respuesta: Form con 2 posibles campos iguales (getElementByID)

Ya me funciona, tenias razon, era problema del ID:

<SCRIPT LANGUAGE="JavaScript">
function DisBox()
{
if(document.form1.disb.checked)
{
document.getElementById('a').blur();
document.getElementById('a').disabled=true;
document.getElementById('b').disabled=false;
}
else
{
document.getElementById('a').disabled=false;
document.getElementById('b').disabled=true;
}
}
</SCRIPT>

Y adicionalmente del Firefox, en explorer funciona ok...

Muchas gracias IsabelM ;)
__________________
Elias Frances
Webmaster (ultimos proyectos) de:
www.internet20.es
  #5 (permalink)  
Antiguo 18/11/2010, 18:06
 
Fecha de Ingreso: agosto-2006
Mensajes: 7
Antigüedad: 18 años, 3 meses
Puntos: 0
Respuesta: Form con 2 posibles campos iguales (getElementByID)

Hola:

No se si sea el sitio indicado pero tengo un problemilla con el getElementById

Resulta que tengo un SELECT que su ID se nombra de acuerdo a un valor $p de un FOR,

<select name="xPsic" id="xPsic<?php echo $p ?>">

luego mediante un botón paso a una función Asigna() variso parametros y entre ellos el valor de $p para saber que SELECT es el que esta mandando los datos, mediante el getElementById trato de obtener el valor seleccionado en el SELECT, pero no puedo, no se como pasar el valor de la variable $p a la instrucción

var xpsi = 'xPsic'+p;
var yPsi = document.getElementById('xPsi').value;

No me reconoce el nombre por las comillas

Agradecería mucho su ayuda

Saludos cordiales
  #6 (permalink)  
Antiguo 19/11/2010, 07:23
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 16 años, 5 meses
Puntos: 1012
Respuesta: Form con 2 posibles campos iguales (getElementByID)

javascript es un lenguaje case-sensitive, es decir es sensible a las mayusculas y minusculas. te lo menciono por esto
Cita:
var xpsi = 'xPsic'+p;
var yPsi = document.getElementById('xPsi').value;
en cuanto a tu problema, lo puedes salvar accediendo al control por su name. también puedes usar el evento onchange para invocar a la función y a esta función pasarle la variable this.id
  #7 (permalink)  
Antiguo 19/11/2010, 08:03
 
Fecha de Ingreso: septiembre-2004
Ubicación: La Plata Argentina
Mensajes: 128
Antigüedad: 20 años, 2 meses
Puntos: 9
Respuesta: Form con 2 posibles campos iguales (getElementByID)

Algo que aprendi hace poco de cronos2 :

para pasar texto a nombre de variable (global) :

supon que el nombre es :

nombre = "var02"

Para llamar a la variable var02, usa :

window['var02'] o window.[nombre] .
Esto equivale a
var var02;

Porque las variables globales son algo asi como objetos del objeto raiz (la window).

Saludos
  #8 (permalink)  
Antiguo 19/11/2010, 11:30
 
Fecha de Ingreso: agosto-2006
Mensajes: 7
Antigüedad: 18 años, 3 meses
Puntos: 0
Respuesta: Form con 2 posibles campos iguales (getElementByID)

Gracias:

IsaBelM

Fue error de dedo la diferencia entre las dos variables, en el scriopt estaban bien.

Muy amable por sus respuestas, buscandole más por alli en el foro encontre una solución:

var xPsi = 'xPsic'+p;
eval('yPsi='+document.getElementById(xPsi).value);

y me funcionó perfectamente

Gracias por sus aportaciones
  #9 (permalink)  
Antiguo 19/11/2010, 15:07
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 16 años, 5 meses
Puntos: 1012
Respuesta: Form con 2 posibles campos iguales (getElementByID)

no sé no me convence mucho usar eval(). sin entender de donde tanto problema, inténtalo con esto otro
Cita:
window.onload = function() {
var sel = document.nombre_formulario.xPsic;
sel.onchange = function() {
alert(this.value + ' ' + this.id);
}
}
Cita:
Iniciado por sysmadryn Ver Mensaje
Algo que aprendi hace poco de cronos2 :

para pasar texto a nombre de variable (global) :

supon que el nombre es :

nombre = "var02"

Para llamar a la variable var02, usa :

window['var02'] o window.[nombre] .
Esto equivale a
var var02;

Porque las variables globales son algo asi como objetos del objeto raiz (la window).

Saludos
no veo la relación de variables globales con el tema que se trata. solo a modo de información para futuras consultas. las variables globales son atributos del objeto window (window.variable, window['variable'], ...)
  #10 (permalink)  
Antiguo 22/11/2010, 09:03
 
Fecha de Ingreso: agosto-2006
Mensajes: 7
Antigüedad: 18 años, 3 meses
Puntos: 0
Sonrisa Respuesta: Form con 2 posibles campos iguales (getElementByID)

Hola IsaBelM:

Tienes razón es un poco confuso el eval(), pero en su momentro me funcionó, pero luego hice algunos cambios en mis datos y en algunas variables elimine el eval() y tambien funcinó.

Lo que pude notar es que cuando se trata de variables que van a almacenar datos númericos es factible quitar el eval(), por ejemplo:

fec = document.getElementById(fec).value;

Muchisisimas gracias por tus aportaciones

Saludos desde el Sureste de México

Etiquetas: campos, getelementbyid, iguales, formulario
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 12:18.