Foros del Web » Programando para Internet » Javascript »

if, elseif, and, or... PUFFFF

Estas en el tema de if, elseif, and, or... PUFFFF en el foro de Javascript en Foros del Web. Quién sería tan amable de ayudarme a estructurar correctamente esta pequeña funcion en javascript que obtuve de un post de KarlanKas? Uno de los problemas ...
  #1 (permalink)  
Antiguo 26/11/2003, 14:22
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 2 meses
Puntos: 535
if, elseif, and, or... PUFFFF




Quién sería tan amable de ayudarme a estructurar correctamente esta pequeña funcion en javascript que obtuve de un post de KarlanKas?

Uno de los problemas que tengo es básico: No sé como usar los operadores lógicos en javascript -- (marco la línea en negrita)
El otro problema, un poco más complejo, es que no sé como sería un ELSEIF en este lenguaje -requete - (marco las íneas en itálicas)

Todo lo que quiero hacer está comentado en el mismo script:



function valida_envio(form)
{
if ((form.ID_Provinc_HIDDEN.value = 'NOM' OR form.ID_Mun_HIDDEN.value = 'NOM') AND form.Demandante.value = 'MUN')

//además, acá tendría que poner que si
//los values de ID_Provinc_HIDDEN O ID_Mun_HIDDEN
//son distintos de 'NOM' Y el value de Demandante
//es distinto de 'MUN' también ocurra el alert y no se envíe el formulario


{
alert("Si es municipal, entonces seleccioná un provincia y un municipio. Si no es municipal, para qué demonios seleccionás municipal? Ah??? aparato!!");
return false;
}
else{form.submit()}
}//valida_envio



gracias
  #2 (permalink)  
Antiguo 26/11/2003, 15:02
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Hola,

Sería así:

if ((form.ID_Provinc_HIDDEN.value = 'NOM' || form.ID_Mun_HIDDEN.value = 'NOM') && form.Demandante.value = 'MUN')

La segunda parte no la entiendo bien pero los else if quedarían:

if (a==2)
alert('hola')
else if (a==3)
alert('adios');

Espero que lo poco que he entendido lo haya contestado bien. Saludos,
  #3 (permalink)  
Antiguo 26/11/2003, 15:49
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 2 meses
Puntos: 535
No sé que ocurre

Puse la función dentro de los tags de <script>, antes del </head> como de costumbre, pero no la llamé desde ningún evento tipo onsubmit, onchange ni nada de nada (porque me olvidé) PERO al cambiar la selección de un select llamado Demandante me da error y me dice que "Se esperaba un objeto"

Alguna idea?

La funsión quedó así finalmente;:




function valida_envio()
{
if ((document.forms.demanda.ID_Provinc_HIDDEN.value = 'NOM' || document.forms.demanda.ID_Mun_HIDDEN.value = 'NOM') && document.forms.demanda.Demandante.value = 'MUN')

{
alert("bla bla bla");
return false;
}
else{document.forms.demanda.submit()}
}//valida_envio




Ahh.. fijate que el <select> llamado Demandante (que es el que manda el error al cambiar su selección) participa dentro de la función


(odio los tags CODE en conjunto con líneas largas )

Última edición por AlZuwaga; 26/11/2003 a las 15:54
  #4 (permalink)  
Antiguo 26/11/2003, 17:15
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Hola dazu y JavierB :

No sé si habrá más errores, pero en javascript las igualdades son "==" y "=" significa asignación.

function valida_envio()
{
if ((document.forms.demanda.ID_Provinc_HIDDEN.value = = 'NOM' || document.forms.demanda.ID_Mun_HIDDEN.value = = 'NOM') && document.forms.demanda.Demandante.value = = 'MUN')

{
alert("bla bla bla");
return false;
}
else{document.forms.demanda.submit()}
}//valida_envio


Saludos
  #5 (permalink)  
Antiguo 26/11/2003, 17:23
Avatar de sci-fi  
Fecha de Ingreso: marzo-2002
Mensajes: 157
Antigüedad: 22 años, 1 mes
Puntos: 0
hola,

fijate que al hacer el check con el if hay que poner == en vez de =, o sea el = es para asignar, pero si es "es igual a?", es ==

también, te conviene llamar a 'return true' en vez de llamar submit(), al final del código, porque si estás llamando esta función con un evento onsubmit, lo que estás haciendo es interceptar el submiting

el error que te está dando, por lo que veo, es porque ese campo "demanda" decís que es un select. Los select no tienen una propiedad value, solamente los input type="text". Los select tienen una propiedad options: [inputSelectObject].options es un array que contiene todas las opciones, de tal modo que si vos tenés tres opciones en el select, podés acceder, a la primera de ellas, con
[inputSelectObject].options[0], y así sucesivamente. Por lo que en el check ese, si la opción que querés verificar que esté seleccionada es la segunda, podés hacer esto:

( bla bla anterior ) && ([inputSelectObject].selectedIndex == 1 )

el 1 para selectedIndex en este caso se refiere al [inputSelectObject].options[1]...

saludos
  #6 (permalink)  
Antiguo 26/11/2003, 17:52
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Hola otra vez:

sci-fi: Acabo de fijarme en w3.org, y he visto que el select no tiene atributo value tal como dices, pero en los navegadores más importantes (no sé si en todos), el value select se corresponde con el del option seleccionado... tal vez sea algo propio de la implementación de los formularios, ya que el paso de parámetros es de la forma nombre_del_name=nombre_del_value.

Saludos
  #7 (permalink)  
Antiguo 26/11/2003, 18:42
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 2 meses
Puntos: 535
Chas gracias señoers, mañana lo pruebo y les comento. Aunque estoy seguro que dieron en el clavo con lo de == en lugar de =

Qué complicada es la sintaxis de javascript... poner dos palitos parados para decir OR, poner dos AND seguidos para simplemente decir AND... que la asignación sea diferente a la comparación... en fin... estoy más acostumbrado a vbscript que es más... "humanamente comprensible"... más "coloquial", para decir algo =)

con respecto a lo que sci-fi comenta... la verdad que no lo sé (y qué podría opinar justamente yo de javascript que no se un sorongo?), pero te digo que funciona con esa propiedad value para los selects... al menos en IE6 (que es el único que me interesa ya que es para una aplicación local e interna.. osea una intranerd)

saludos
__________________
...___...
  #8 (permalink)  
Antiguo 26/11/2003, 19:55
Avatar de sci-fi  
Fecha de Ingreso: marzo-2002
Mensajes: 157
Antigüedad: 22 años, 1 mes
Puntos: 0
hola caricatos, dazuaga,

Cita:
en los navegadores más importantes (no sé si en todos), el value select se corresponde con el del option seleccionado... tal vez sea algo propio de la implementación de los formularios, ya que el paso de parámetros es de la forma nombre_del_name=nombre_del_value.
están seguros? desde que tengo uso de razón (que no es mucho tiempo en realidad) que los select nunca los pude usar con value. Creo que el error que comenta dazuaga, que le tira el IE, se debe a que está usando una propiedad value para un select... no sé, por ahi funciona en el IE, pero ves que cuando las cosas se ponen picantes, usar algo así te trae problemas por otro lado, aunque el IE lo soporte, te tira errores por otro lado...

con respecto a lo que comenta caricatos, la cuestión de name y value, creo que en realidad la propiedad value la asocio por lo menos con lo que tiene que ver con el "input" del usuario, en cambio los select, radio y todos esos, que son en realidad "multiple choices", que en realidad son todas opciones predefinidas que el usuario tiene que definir, no tienen propiedades value.
Pero bueno... ah se podría probar si realmente el IE u otros navegadores soportan la propiedad value en select poniendole al select un event handler asi: onMouseOver="alert(this.value)", teniendo en cuenta que esté seleccionada en ese momento alguna de las opciones...


saludos
  #9 (permalink)  
Antiguo 27/11/2003, 04:24
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Hola otra vez:

A las pruebas me remito...

Acabo de subir está página: http://www.pepemolina.com/pruebas/prueba143.html

No te fijes en la estética ya que justamente estaba haciendo pruebas para este tema que parece resuelto.

Saludos
  #10 (permalink)  
Antiguo 27/11/2003, 12:04
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Hola a todos.

Me distraigo un momento y cuando vuelvo me encuentro con el problema solucionado

A mi también me ha sorprendido lo de que el value de los select no es estandard, pero bueno... es otra de las muchas cosas que ignoro

Te pido disculpas, dazuaga, por el asunto de los == Con las prisas copie tu código y solo cambié los or por los palitroques y los and por &&

Saludos,
  #11 (permalink)  
Antiguo 27/11/2003, 13:22
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 2 meses
Puntos: 535
Bien muchachos, era al final como decían... cambiar los "=" por "==" y listo.

Asunto solucionado.
Gracias a todos.
__________________
...___...
  #12 (permalink)  
Antiguo 27/11/2003, 15:38
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 22 años, 4 meses
Puntos: 61
Cachis! Yo sí que he llegado tarde!
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.
  #13 (permalink)  
Antiguo 27/11/2003, 15:55
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
ah... no, quien de verdad sí ha llegado tarde, he sido yo
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 00:18.