Foros Néfele 4 Harbour › Foros › Dudas › Lanzar un mensaje de alerta
- Este debate tiene 15 respuestas, 2 mensajes y ha sido actualizado por última vez el 4 años, 1 mes por Xevi. This post has been viewed 765 times
-
AutorEntradas
-
-
04-10-2020 a las 22:46 #977XeviParticipante
Hasta ahora, con un boton abro una ventana, recibiendo los parámetros que en la anterior se pasan...
Estoy revisando el nuevo sample Néfele.
Una cosa que intento hacer, y no doy con ello.
Veo botones para lanzar mensajes por ejemplo
1:cOnClick := "#alert('Alerta básica')"Pero el caso que intento es llamara a una función... en :cOnClick := "mifuncion"
sin mostrar nada, o incluso mejor si se pudiera mostrar un reloj de tiempo "trabajando", solo hacer unos cálculos/operaciones/comprovaciones, y finalmente, acabado el proceso en función de SI o NO mostrar, ahora si, un alert (en la pagima mismamente volviendola activa) o abrir una página nueva.
Algo así...
1234567891011:cOnClick := "mifuncion"...PROCEDURE mifuncion()If oCGI:GetCgiValue("valor1") = "SI"miotrapagina()Elsealert("NO")EndIfRETURNUn Saludo,
Xevi
-
05-10-2020 a las 00:06 #978XeviParticipante
Entiendo, creo, que debo de hacer o crear un script
Algo así... pero que al no saber java, no se como hacerlo
123456789<script>function mifuncion() {var mivar = $( '#valor1' ).val()if ( mivar = "SI" )window.location.href = '/@Soft'elsealert( 'NOnoNOnoNOnoNOno' )}</script>luego lo añado a la pagina
:aScript := { MemoRead( oCgi:GetEnv("DOCUMENT_ROOT") + "/miscript.script" ) }
Pero, el valor no lo "pilla" o no se que hago mal, que valor1 tenga el valor que tenga SIEMPRE me lanza window.location.href = '/@Soft'
Un Saludo,
Xevi.
-
05-10-2020 a las 00:22 #979Alfredo SanzSuperadministrador
Xevi,
En javascript el signo = SIEMPRE SIEMPRE SIEMPRE es de asignación
Te lo repito 3 veces para que no te pase como a mi, que la mitad de las veces me olvido de ello 🙂
Para comparar dos valores tienes que usar ==
-
05-10-2020 a las 00:32 #980XeviParticipante
Gracias, Fredy,
Y, por pedir... seria muy difícil implementar en Néfele, algo así en un boton???
:cOnClick := "{|| If( mifuncion(), hazesto(), hazestootro() }"
-
05-10-2020 a las 11:10 #983Alfredo SanzSuperadministrador
Prueba esto
1234567With Object WButton():New( :WO)AAdd( :aScript, ' function decidir() { return (Math.random() > 0.5 ) ? true : false}')AAdd( :aScript, ' function mostrar(c) { alert("AHORA ES " + c) }'):cText := "¿ Sí o no ?":cOnClick := "#( decidir() ) ? mostrar('SÍ') : mostrar('NO')":Create()End With -
05-10-2020 a las 12:00 #985XeviParticipante
Fredy,
Creo entender... la funcion decidir(), dependiendo del valor que le retorna la funcion aleatoria random(), si true o false muestra SI o NO.
Esta és mas o menos la idea.
Igual me explico mal, seguro...
Estoy revisando los ejemplos y no encuentro ninguno que sea el caso que busco.
Por ejemplo, tomando el formulario1, "Controles básicos"
Al pulsar el boton, lanzar mifuncion(), ejecutar código, (abrir una dbf, un array) localizar el nombre por ejemplo y si ése nombre lo localiza, solo en ese caso, pasar a la siguiente ventana (en ese caso VisParam)
en caso contrario, mostrar solamente un alert, por ejemplo, "Nombre no localizado" y quedarse en esa misma página.
Gracias por tu tiempo
Un saludo,
Xevi
-
05-10-2020 a las 14:47 #987Alfredo SanzSuperadministrador
Uff, este me ha costado, estáis poniendo el listón muy alto 🙂
He tomado como base el ejemplo que ya tenemos y he modificado la función a la que llamamos por ajax
Lo que buscas es algo así
Contenido no disponible.
Por favor, acepta las cookies haciendo clic en este aviso1234567891011121314151617181920212223242526272829PROCEDURE DatosClte()LOCAL cDato := oCGI:GetCgiValue("key","")LOCAL aClientes := {{"123","Alfredo","Sanz","Pérez"},;{"456","Pedro","Amaro","Perdomo"},;{"789","Fernando","Martín","Regalde"}}LOCAL nIdx := HB_Ascan(aClientes,{|x| x[1]==cDato})LOCAL cHtmlif nIdx > 0cHtml := UpdateValues( aClientes[nIdx,2], aClientes[nIdx,3], aClientes[nIdx,4] )ELSEcHtml := UpdateValues( "", "", "" )IF Val(cDato) > 0WITH OBJECT WMsgAlert():New():cText := "Dato no encontrado":cType := "error":lModal := .T.:Create()cHtml += :fullhtml()ENDELSEIF !Empty(cDato)cHtml := Tag("script","window.location.href='https://www.google.es/search?q="+cDato+"'")ENDIFENDIFoCGI:SendScript( cHtml )RETURN- Esta respuesta fue modificada 4 años, 1 mes por Alfredo Sanz.
-
05-10-2020 a las 15:13 #989XeviParticipante
Fredy,
no funciona como muestras en el video.
el Alert "Dato no encontrado" no se visualiza nunca
SI se abre google con el texto en codigo clte si ése no és un valor numérico, pero si éste no lo localiza, no muestra mensaje.
Un Saludo,
Xevi.
-
05-10-2020 a las 15:24 #990XeviParticipante12345678910111213141516171819202122232425262728PROCEDURE DatosClte()LOCAL cDato := oCGI:GetCgiValue("key","")LOCAL aClientes := {{"123","Alfredo","Sanz","Pérez"},;{"456","Pedro","Amaro","Perdomo"},;{"789","Fernando","Martín","Regalde"}}LOCAL nIdx := HB_Ascan(aClientes,{|x| x[1]==cDato})LOCAL cHtmlif nIdx > 0cHtml := UpdateValues( aClientes[nIdx,2], aClientes[nIdx,3], aClientes[nIdx,4] )ELSEcHtml := UpdateValues( "", "", "" )IF Val(cDato) > 0cHtml := Tag("script", "alert('Dato no encontrado')" )/* WITH OBJECT WMsgAlert():New():cText := "Dato no encontrado":cType := "error":lModal := .T.:Create()cHtml += :fullhtml()END*/ELSEIF !Empty(cDato)cHtml := Tag("script","window.location.href='https://www.google.es/search?q="+cDato+"'")ENDIFENDIFoCGI:SendScript( cHtml )
De esta manera SI lanza el mensaje alert()
Ahora lo que yo intento es que ese comportamiento lo haga al pulsar el botón, NO al modificar un campo...
Con eso voy a probar!!!
Gracias por tu tiempo
Un saludo,
Xevi.
-
05-10-2020 a las 16:20 #992XeviParticipante
Bien... un ejemplo lo mas sencillo que he podido, con Ajax que al cambiar contenido de un WEdit(), funciona correctamente ir a otro procedure/página o mensaje de alerta...
123456789101112131415161718192021222324252627282930313233#include "Xailer.ch"#include "Nefele.ch"PROCEDURE Prueba()WITH OBJECT TWebPage():New()with object WEdit():New(:WO):nTimeOut := 1:cAjaxTimeOut := "Prueba2":cTitle := "Valor1":Create()end withoCgi:SendPage( :Create() )END WITHRETURN//------------------------------------------------------------------------------PROCEDURE Prueba2()Local cHtmlLocal cDato := oCGI:GetCgiValue("key","")If cDato == "aaa"cHtml := Tag( "script", "window.location.href = '/miweb?miprocedure'" )oCGI:SendScript( cHtml )ElsecHtml := Tag("script", "alert('Dato NO encontrado')" )oCGI:SendScript( cHtml )EndIfRETURNAhora bien,
¿Cómo consigo esto mismo, pero que no sea al cambiar el contenido de un WEdit, sinó al pulsar un botón???
Osea, rellenar uno, dos WEdits, y otros datos si cabe, pero que no sea hasta pulsar el botón, donde compruebe uno o más de esos campos y ahí se decida si abrir otra página o mostra un mensaje de alerta y retornar donde estava.
Ahí estoy atorado.
Un Saludo,
Xevi.
-
05-10-2020 a las 16:52 #995XeviParticipante
algo así... pero que me lanze el código... que así lo que hace es mostrarme el código por pantalla
123456789101112131415161718192021222324252627282930313233343536373839PROCEDURE Prueba()WITH OBJECT TWebPage():New()with object WEdit():New(:WO):cId := "valor1":cTitle := "Valor1":Create()end withWITH OBJECT WButton():New(:WO):aParams := { { "key", "#valor1" } }:cText := "Entrar":cOnClick := "Prueba2":lCenter := .T.:Create()END WITHoCgi:SendPage( :Create() )END WITHRETURN//------------------------------------------------------------------------------PROCEDURE Prueba2()Local cHtmlLocal cDato := oCGI:GetCgiValue("key","")oCgi:Console( oCgi:aParams )If cDato == "aaa"cHtml := Tag( "script", "window.location.href = '/miweb?miprocedure'" )oCGI:SendScript( cHtml )ElsecHtml := Tag("script", "alert('Dato NO encontrado')" )oCGI:SendScript( cHtml )EndIfRETURNUn Saludo,
Xevi.
-
05-10-2020 a las 17:24 #997Alfredo SanzSuperadministrador
-
05-10-2020 a las 17:26 #999XeviParticipante
Eso, eso mismo!!!
-
05-10-2020 a las 17:36 #1001Alfredo SanzSuperadministrador
Recuerda, los dos procedures tiene que estar declardos en el enrutador en TCGI
123456789101112131415161718192021222324252627282930313233343536373839404142PROCEDURE XeviWITH OBJECT TWebPage():New()WITH OBJECT WEdit():New(:WO):cId := "valor1":cTitle := "Valor1":cHelp := "prueba con aaa o con cualquier otro valor":Create()END WITHWITH OBJECT WButton():New(:WO):cText := "Sin miedo, púlsame":cOnClick := "xevi2":cAjaxBevel := "nflcargo":aParams := { { "valor1", "#valor1"} }:Create()END WITHoCgi:SendPage( :Create() )END WITHRETURN//------------------------------------------------------------------------------PROCEDURE xevi2Local cHtmlLocal cDato := oCGI:GetCgiValue("valor1","")IF cDato == "aaa"cHtml := Tag( "script", "window.location.href = '/miweb?miprocedure'" )oCGI:SendScript( cHtml )ELSEcHtml := Tag("script", "alert('Dato NO encontrado')" )oCGI:SendScript( cHtml )ENDIFRETURNEl aParams en wButtons es porque no estamos dentro de un form.
Si declaras un formulario con :cFunction="xevi2" y :cAjaxBevel="nflcargi" y el botón es el submit del form no haría falta poner el :aParams
-
05-10-2020 a las 17:51 #1002XeviParticipante
Fredy,
No iba mal encaminado, veo, buuuuffff!!!
Lo he probado también como <form>, y funciona correctamente en los dos.
Así para form
1234567891011121314151617181920212223242526WITH OBJECT TWebPage():New()WITH OBJECT WForm():New(:WO):cFunction := "xevi2":cAjaxBevel := "nflcargo"WITH OBJECT WEdit():New(:WO):cId := "valor1":cTitle := "Valor1":cHelp := "prueba con aaa o con cualquier otro valor":Create()END WITHWITH OBJECT WButton():New(:WO):cText := "Sin miedo, púlsame":lSubmit := .T.:Create()END WITH:Create()END WITHoCgi:SendPage( :Create() )END WITHGracias por tu tiempo.
Un Saludo,
Xevi.
-
05-10-2020 a las 18:45 #1003XeviParticipante
Empiezo mi primer proyecto web... ahora creo que SI !!!
pues una de las cosas a tener de entrada, es poder saber quien se conecta y a qué le vas a dar acceso. A partir de ahí, a ver si puedo hacer crecer poco a poco la aplicación.
http://xevicomas.duckdns.org:8069/@Soft
Gracias al equipo Néfele!!!
Un Saludo,
Xevi.
-
-
AutorEntradas
- Debes estar registrado para responder a este debate.