FAQ
Holas:
Sigo tratando de crear un formlario y validarlo en JavaScript antes de
enviarlos al servidor con PHP, pero al pulsar al boton de "Entrar", el
Internet Explorer 5 me da un error de "Error en tiempo de
ejecución". No he probado en otros navegadores.
¿Que estoy haciendo mal? ¿está mal configuarado mi equipo? ¿os funciona a
vosotros tal y como lo he escrito?
Aqui os mando un resumen del código:

<!-- pongo estas lineas para que en la gente de la lista puedan ver mi
codigo
<html>
<head>
<title></title>
<script language=”JavaScript”>
function Validar(this)
{
if (this.AdmName.href=="")
alert(“Debe rellenar todos los campos”);
else
// aqui va la funcion de mandar los datos del formulario
}
</script>
</head>

<body>
<form name="formulario" method="POST" action="Administra.php">
Nombre
<input type="text" size=16 name="AdmName">
Contraseña
<input type="text" size=16 name="AdmPass" value="">
<input type="button" value="Entrar >>" onClick="Validar(this)">
</form>
</body>
</html>

--y aqui lo cierro -->




____ |\/| =============================
\ /\ / ..__.
\/ \__\ _/ phx_spain@hotmail.com
\__ __ \_
\____\___\ =============================

_________________________________________________________________
Charla con tus amigos en línea mediante MSN Messenger.
http://messenger.microsoft.com/es

Search Discussions

  • Jose Luis Pumarega Rubio at Dec 3, 2003 at 12:33 pm
    Fíjate en dos cosillas:
    1.- Las comillas de "debe rellenar todos los campos" no son las normales
    dobles comillas de toda la vida (de las que se obtienen con may+2 en el
    block de notas) si no de las redonditas. Esto puede estar lanzando un
    error... Cambialo por comillas normales ...

    2.- La sintaxis
    if (condicion)
    sentencia
    else
    //comentario
    da error por cojones, por que en realidad no detecta nada después del
    else. Para evitar errores de ese tipo sería muy beuno que encerrases los
    bloque entre llaves,

    if (condicion) {
    sentencia
    } else {
    //comentario
    }

    El error en tiempo de ejecución ¿no te da más detalles? De todas maneras
    prueba esto a ver si ahora ya funciona...
    Holas:
    Sigo tratando de crear un formlario y validarlo en JavaScript antes de
    enviarlos al servidor con PHP, pero al pulsar al boton de "Entrar", el
    Internet Explorer 5 me da un error de "Error en tiempo de
    ejecución". No he probado en otros navegadores.
    ¿Que estoy haciendo mal? ¿está mal configuarado mi equipo? ¿os funciona a
    vosotros tal y como lo he escrito?
    <script language=”JavaScript”>
    function Validar(this)
    {
    if (this.AdmName.href=="")
    alert(“Debe rellenar todos los campos”);
    else
    // aqui va la funcion de mandar los datos del formulario
    }
    </script>
  • Jose A. Salido Moriel at Dec 3, 2003 at 12:42 pm
    te mando el modificado, ok? lo he hecho sobre el mail asi que pruebalo.

    un saludo, jose.

    <!-- pongo estas lineas para que en la gente de la lista puedan ver mi
    codigo
    <html>
    <head>
    <title></title>
    <script language=”JavaScript”>
    function validar()
    {

    var error="";
    if (document.formulario.AdmName.value=="")
    {
    error=error+"- El nombre no puede estar en blanco.\n";
    }
    if (document.formulario.AdmPass.value=="")
    {
    error=error+"- La contraseña no puede estar en blanco.\n";
    }

    if (error=="")
    {
    document.formulario.submit(); //se envia el formulario
    }
    else
    {
    //se muestra(n) el(los) error(es)
    alert(error+" Revise el formulario. Gracias.");
    }

    }
    </script>
    </head>

    <body>
    <form name="formulario" method="POST" action="Administra.php">
    Nombre
    <input type="text" size=16 name="AdmName">
    Contraseña
    <input type="text" size=16 name="AdmPass" value="">
    <input type="button" value="Entrar >>" onClick="Validar(this)">
    </form>
    </body>
    </html>

    --y aqui lo cierro -->




    ____ |\/| =============================
    \ /\ / ..__.
    \/ \__\ _/ phx_spain@hotmail.com
    \__ __ \_
    \____\___\ =============================

    _________________________________________________________________
    Charla con tus amigos en línea mediante MSN Messenger.
    http://messenger.microsoft.com/es


    ---------------------------------------------------------------------
    Archivo On-line: http://www.phpes.com/
    via news: news://news.phpes.com/
    Manual PHP en español: http://www.php.net/manual/es/
    Para dar de baja la suscripción, mande un mensaje a:
    lista-unsubscribe@phpes.com
  • Jose Luis Pumarega Rubio at Dec 3, 2003 at 12:52 pm
    Cuidado con el nombre de la función, que debería de estar en el mismo
    caso en su declaración que en su llamada (es decir, si se declara como
    validar(), no puede ser Validar() o VALIDAR() a la hora de llamarlo, si
    no validar()) Esto te da un error de "se esperaba un objeto" .
    otra cosa es que tengas cuidado con los argumentos que pasas, en este
    caso no debería darte fallos el enviar un argumento que la declaración
    de la función no especifica, pero ándate con ojo.
    Y finalmente lo adecuado es poner
    onsubmit="return valida()"
    y que valida devuelva verdadero o falso en función de la comprobación.
    De otra manera el formulario se seguirá enviando despues del alert.

    Jose A. Salido Moriel escribió:
    te mando el modificado, ok? lo he hecho sobre el mail asi que pruebalo.

    un saludo, jose.

    <!-- pongo estas lineas para que en la gente de la lista puedan ver mi
    codigo
    <html>
    <head>
    <title></title>
    <script language=”JavaScript”>
    function validar()
    {

    var error="";
    if (document.formulario.AdmName.value=="")
    {
    error=error+"- El nombre no puede estar en blanco.\n";
    }
    if (document.formulario.AdmPass.value=="")
    {
    error=error+"- La contraseña no puede estar en blanco.\n";
    }

    if (error=="")
    {
    document.formulario.submit(); //se envia el formulario
    }
    else
    {
    //se muestra(n) el(los) error(es)
    alert(error+" Revise el formulario. Gracias.");
    }

    }
    </script>
    </head>

    <body>
    <form name="formulario" method="POST" action="Administra.php">
    Nombre
    <input type="text" size=16 name="AdmName">
    Contraseña
    <input type="text" size=16 name="AdmPass" value="">
    <input type="button" value="Entrar >>" onClick="Validar(this)">
    </form>
    </body>
    </html>

    --y aqui lo cierro -->



  • Jose A. Salido Moriel at Dec 3, 2003 at 1:11 pm
    Hola, tienes razon, me he preocupado de la funcion y se me ha olvidado el
    boton del formulario:

    el boton seria:
    <input type="button" value="Entrar >>" onClick="javascript:validar();">

    el onSubmit no haria falta realmente ya que hago la validacion en la funcion


    y el submit solo se produce si la variable error está vacia, por tanto si
    algun campo está vacio, lo cual llenaria la variable error, no se manda el
    formulario. es una forma de sacar los errores distintos para cada campo, lo
    que una funcion booleana no permite.


    Gracias por las anotaciones
    un saludo, jose.


    -----Mensaje original-----
    De: Jose Luis Pumarega Rubio
    Enviado el: miércoles, 03 de diciembre de 2003 13:55
    Para: lista@phpes.com
    Asunto: Re: [PHP-ES] [OT] Sencillo formulario en

    Cuidado con el nombre de la función, que debería de estar en el mismo
    caso en su declaración que en su llamada (es decir, si se declara como
    validar(), no puede ser Validar() o VALIDAR() a la hora de llamarlo, si
    no validar()) Esto te da un error de "se esperaba un objeto" .
    otra cosa es que tengas cuidado con los argumentos que pasas, en este
    caso no debería darte fallos el enviar un argumento que la declaración
    de la función no especifica, pero ándate con ojo.
    Y finalmente lo adecuado es poner
    onsubmit="return valida()"
    y que valida devuelva verdadero o falso en función de la comprobación.
    De otra manera el formulario se seguirá enviando despues del alert.
  • Jose A. Salido Moriel at Dec 3, 2003 at 1:01 pm
    AH, UNA COSA:

    el <script language=”JavaScript”> cambialo por

    <script language="JavaScript">

    que se me ha pasao, jeje, y usa las comillas " y no las cosas esas raras

    Un saludo, jose.

    <!-- pongo estas lineas para que en la gente de la lista puedan ver mi
    codigo
    <html>
    <head>
    <title></title>
    <script language="JavaScript">
    function validar()
    {

    var error="";
    if (document.formulario.AdmName.value=="")
    {
    error=error+"- El nombre no puede estar en blanco.\n";
    }
    if (document.formulario.AdmPass.value=="")
    {
    error=error+"- La contraseña no puede estar en blanco.\n";
    }

    if (error=="")
    {
    document.formulario.submit(); //se envia el formulario
    }
    else
    {
    //se muestra(n) el(los) error(es)
    alert(error+" Revise el formulario. Gracias.");
    }

    }
    </script>
    </head>

    <body>
    <form name="formulario" method="POST" action="Administra.php">
    Nombre
    <input type="text" size=16 name="AdmName">
    Contraseña
    <input type="text" size=16 name="AdmPass" value="">
    <input type="button" value="Entrar >>" onClick="Validar(this)">
    </form>
    </body>
    </html>
  • Abraham Vega Carrasco at Dec 3, 2003 at 1:10 pm
    prueba esto::
    <html>
    <head>
    <title>Untitled Document</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <script language="JavaScript">
    <!--
    function MM_findObj(n, d) { //v4.0
    var p,i,x; if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length)
    {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
    if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms
    [i][n];
    for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers
    [i].document);
    if(!x && document.getElementById) x=document.getElementById(n); return x;
    }

    function MM_validateForm() { //v4.0
    var i,p,q,nm,test,num,min,max,errors='',args=MM_validateForm.arguments;
    for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=MM_findObj(args[i]);
    if (val) { nm=val.name; if ((val=val.value)!="") {
    if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@');
    if (p<1 || p==(val.length-1)) errors+='- '+nm+' must contain an e-mail
    address.\n';
    } else if (test!='R') {
    if (isNaN(val)) errors+='- '+nm+' must contain a number.\n';
    if (test.indexOf('inRange') != -1) { p=test.indexOf(':');
    min=test.substring(8,p); max=test.substring(p+1);
    if (val<min || max<val) errors+='- '+nm+' must contain a number
    between '+min+' and '+max+'.\n';
    } } } else if (test.charAt(0) == 'R') errors += '- '+nm+' is required.\n'; }
    } if (errors) alert('The following error(s) occurred:\n'+errors);
    document.MM_returnValue = (errors == '');
    }
    //-->
    </script>
    </head>

    <body bgcolor="#FFFFFF" text="#000000">

    <form name="formulario" method="POST" action="Administra.php">
    Nombre
    <input type="text" size=16 name="AdmName">
    Contraseña
    <input type="text" size=16 name="AdmPass" value="">

    <input type="button" value="Entrar >>" onClick="MM_validateForm
    ('AdmName','','R','AdmPass','','R');return document.MM_returnValue">
    </form>

    </body>
    </html>


    -------------------------------------------------
    Este correo fue enviado por http://alumnos.utalca.cl
  • Jose Luis Pumarega Rubio at Dec 3, 2003 at 2:43 pm
    ayay. Me he perdío

    Jose A. Salido Moriel escribió:
    Hola, tienes razon, me he preocupado de la funcion y se me ha olvidado el
    boton del formulario:

    el boton seria:
    <input type="button" value="Entrar >>" onClick="javascript:validar();">

    Cuidadillo: fíjate en que si mantienes la declaración de la función tal
    y como te la he enviado, *necesitas* pasarle un argumento: más aún, para
    que funcione correctamente, debes pasarle un objeto form que tenga un
    campo AdmName
    el onSubmit no haria falta realmente ya que hago la validacion en la funcion


    y el submit solo se produce si la variable error está vacia, por tanto si
    algun campo está vacio, lo cual llenaria la variable error, no se manda el
    formulario. es una forma de sacar los errores distintos para cada campo, lo
    que una funcion booleana no permite.
    no te acabo de entender.... el onsubmit es necesario (dentro de la
    etiqueta form) en tanto que quieras lanzar la función de validación
    antes de que el formulario se envíe. De otra manera no habría caso, no
    se lanzaría ninguna función al enviar el formulario, a no ser que la
    añadieses mediante:
    document.forms["nombre"].onsubmit=valida;
    La función lo que te permite es ir comprobando campo por campo, y al
    final decidir si va a devolver true (el formulario se envía) o false (no
    se envía)

    Échale un ojillo a este artículo: http://www.tierradenomadas.com/rc011.phtml
    y a este otro:
    http://developer.apple.com/internet/javascript/validation.html

    O lo mismo me estoy haciendo la picha un lío y no te he pillado ni una
    palabra, que tengo la comida en el gaznate aún ;-D

    Un saludete!

Related Discussions

Discussion Navigation
viewthread | post
Discussion Overview
groupphp-general-es @
categoriesphp
postedDec 3, '03 at 12:23p
activeDec 3, '03 at 2:43p
posts8
users4
websitephp.net

People

Translate

site design / logo © 2022 Grokbase