Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] Formulario

Estas en el tema de Formulario en el foro de Javascript en Foros del Web. Hola: He estado buscando cómo reemplazar el texto ENVIAR de un formulario por una imagen con roll over. Llevo un par de semanas buscando y ...
  #1 (permalink)  
Antiguo 01/04/2014, 18:51
Avatar de juanlaborde  
Fecha de Ingreso: febrero-2013
Mensajes: 39
Antigüedad: 11 años, 2 meses
Puntos: 2
Pregunta Formulario

Hola: He estado buscando cómo reemplazar el texto ENVIAR de un formulario por una imagen con roll over.
Llevo un par de semanas buscando y he encontrado algunas cosas que se acercan, llegué a lograr que lo envíe con una imagen, pero necesito que sea con una imagen de sustitucuón y ademas que lo valide.

Debido al manoseo del código comparto una versión del mismo en el punto que inicié a investigar este tema. y adjunto una liga con el formulario en linea ya validado y funcionando al presionar ENVIAR, pero la imagen de sustitución no está integrada al form, si alguno puede ayudarme o si sabe de algún tut sobre esto le agradeceré la info.

Desde ya muchas gracias

FORM EN LÍNEA:
http://www.juanlaborde.com/form/


<INDEX.PHP>

<!--PHP FORMULARIO-->
<?php
$result = isset($_POST['error5']) ? $_POST['error5'] : null ;
$error1 = isset($_POST['error1']) ? $_POST['error1'] : null ;
$error2 = isset($_POST['error2']) ? $_POST['error2'] : null ;
$error3 = isset($_POST['error3']) ? $_POST['error3'] : null ;
$error4 = isset($_POST['error4']) ? $_POST['error4'] : null ;
$error5 = isset($_POST['error5']) ? $_POST['error5'] : null ;

$asunto = "ASUNTO DEL CORREO";

if(isset($_POST['boton'])){
if($_POST['nombre'] == '' or $_POST['nombre'] == 'Nombre'){
$error1 = '<span class="error_a">Ingrese su nombre</span>';
}

else if($_POST['email'] == '' or $_POST['email'] == 'Correo' or !preg_match("/^[a-zA-Z0-9_\.\-]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\.]+$/",$_POST['email'])){
$error2 = '<span class="error_b">Ingrese un email correcto</span>';
}

// else if($_POST['telefono'] == '' or $_POST['telefono'] == 'Tel&eacute;fono' or !preg_match("/^[0-9\s\+\-\.]*$/",$_POST['telefono'])){
// $error3 = '<span class="error_c">Ingrese un telefono</span>';
// }

else if($_POST['pais'] == '' or $_POST['pais'] == 'País'){
$error4 = '<span class="error_d">Ingrese un pais</span>';
}

else if($_POST['mensaje'] == '' or $_POST['mensaje'] == 'Mensaje'){
$error5 = '<span class="error_e">Ingrese un mensaje</span>';
}

else{
$dest = "[email protected]";
$nombre = $_POST['nombre'];
$email = $_POST['email'];
$telefono = $_POST['telefono'];
$pais = $_POST['pais'];
$cuerpo = $_POST['mensaje'];

$headers = "From: $email\r\n";
$headers .= "X-Mailer: PHP5\n";
$headers .= 'MIME-Version: 1.0' . "\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";

$mje = "NOMBRE: " . $nombre . "\r\n";
$mje .= "<br/>CORREO: " . $email . " \r\n";
$mje .= "<br/>TEL&Eacute;FONO: " . $telefono . " \r\n";
$mje .= "<br/>PA&Iacute;S: " . $pais . " \r\n";
$mje .= "<br/><br/>MENSAJE: " . $_POST['mensaje'] . " \r\n <br/><br/>";
$mje .= "<br/>Enviado el " . date('d/m/Y', time()) . "<br/><br/>";

if(mail($dest,$asunto,$mje,$headers)){
$result = '<div class="result_ok">Su mensaje ha sido enviado.</div>';
$_POST['nombre'] = '';
$_POST['email'] = '';
$_POST['telefono'] = '';
$_POST['pais'] = '';
$_POST['mensaje'] = '';
}else{
$result = '<div class="result_fail">Hubo un error al enviar el mensaje :(</div>';
}
}
}
?>
<!--FIN DE PHP FORMULARIO-->

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>form</title>

<link href="css/contacto.css" rel="stylesheet" type="text/css" />

<script type="text/javascript">
<!--
//v3.0
function MM_preloadImages() {var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array(); var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++) if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}} //v3.0

function MM_findObj(n, d) {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 && d.getElementById) x=d.getElementById(n); return x;} //v4.01

//v3.
function MM_swapImgRestore() { //v3.0
var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_swapImage() { //v3.0
var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}


//-->
</script>

<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
<link rel='stylesheet' href='css/formulario.css'>
<script src='http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js'></script>
<script src='js/funciones_contacto.js'></script>

</head>

<body>
<div id="contenedor">

<div id="recuadro_contacto">
<div class="contactenos"></div>
<div id="contenedor_formulario">

<form method='POST' action='' id="fcontacto" name="fcontacto">

<?php if( isset($_POST['nombre']) ){echo $_POST['nombre'];}else { echo "Nombre";} ?>

<div class="campos_div campo_nombre"><input type='text' class="campos_datos" name='nombre' onblur="if (this.value == '') {this.value = 'Nombre';}" onfocus="if (this.value == 'Nombre') {this.value = '';}" value='<?php if( isset($_POST['nombre']) ){echo $_POST['nombre'];}else { echo "Nombre";} ?>'><?php echo $error1 ?></div>

<div class="campos_div campo_correo"><input type='text' class="campos_datos" name='email' onblur="if (this.value == '') {this.value = 'Correo';}" onfocus="if (this.value == 'Correo') {this.value = '';}" value='<?php if( isset($_POST['email']) ){echo $_POST['email'];}else { echo "Correo";} ?>'><?php echo $error2 ?></div>

<div class="campos_div campo_telefono"><input type='text' class="campos_datos" name='telefono' onblur="if (this.value == '') {this.value = 'Tel&eacute;fono';}" onfocus="if (this.value == 'Tel&eacute;fono') {this.value = '';}" value='<?php if( isset($_POST['telefono']) ){echo $_POST['telefono'];}else { echo "Tel&eacute;fono";} ?>'><?php echo $error3 ?></div>

<div class="campos_div campo_pais"><input type='text' class="campos_datos" name='pais' onblur="if (this.value == '') {this.value = 'País';}" onfocus="if (this.value == 'País') {this.value = '';}" value='<?php if( isset($_POST['pais']) ){echo $_POST['pais'];}else { echo "País";} ?>'><?php echo $error4 ?></div>

<div class="campos_div campo_mensaje"><textarea rows='6' class="campos_texto" name='mensaje' onblur="if (this.value == '') {this.value = 'Mensaje';}" onfocus="if (this.value == 'Mensaje') {this.value = '';}"><?php if( isset($_POST['mensaje']) ){echo $_POST['mensaje'];}else { echo "Mensaje";} ?></textarea><?php echo $error5 ?></div>

<div class="etiqueta boton_envio"><input class='bt_transparente' type="submit" name='boton' src="img/avion_papel.jpg" value="ENVIAR">
<a href="#" onclick="btnenviar();" onmouseout="MM_swapImgRestore()" onmouseover="MM_swapImage('avion_papel','','img/avion_papel_over.jpg',1)"><img src="img/avion_papel.jpg" alt="ENVIAR" width="185" height="98" id="avion_papel" /></a>
</div>
<?php echo $result; ?>

</form>
</div>
</div>

</div>

</body>
</html>

</INDEX.PHP>
__________________
Juan Laborde
www.juanlaborde.com
  #2 (permalink)  
Antiguo 01/04/2014, 23:48
 
Fecha de Ingreso: julio-2011
Mensajes: 220
Antigüedad: 12 años, 9 meses
Puntos: 72
Respuesta: Formulario

Utiliza input type="image" en lugar de "submit" y sobre este haz el rollover. Saludos.
  #3 (permalink)  
Antiguo 02/04/2014, 00:17
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Respuesta: Formulario

Hola:

Cita:
Iniciado por lubtufano Ver Mensaje
Utiliza input type="image" en lugar de "submit" y sobre este haz el rollover. Saludos.
Esa no es la mejor opción, porque entre otras cosas, envía las coordenadas de donde se ha pinchado (datos normalmente innecesarios)...

Existe el tag button, que por defecto es del tipo submit (aunque es mejor definir ese atributo type para que así lo reconozca explorer). Dentro de ese tag button puedes poner lo que quieras, incluso una imagen de sustitución.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #4 (permalink)  
Antiguo 02/04/2014, 11:35
Avatar de juanlaborde  
Fecha de Ingreso: febrero-2013
Mensajes: 39
Antigüedad: 11 años, 2 meses
Puntos: 2
De acuerdo Respuesta: Formulario

Antes que nada Gracias a ambos por las sugerencias.

Caricatos, en base a tu sugerencia hice esto y funciona a la perfección.
Solo me resta probarlo en diferentes navegadores.
Muchas gracias


<div class="etiqueta boton_envio">
<button class="bt_transparente" type="image" name="boton">
<a href="#" onclick="btnenviar();" onmouseout="MM_swapImgRestore()" onmouseover="MM_swapImage('avion_papel','','img/avion_papel_over.jpg',1)"><img src="img/avion_papel.jpg" alt="ENVIAR" width="185" height="98" id="avion_papel" border="0" /></a></button>
</div>
__________________
Juan Laborde
www.juanlaborde.com
  #5 (permalink)  
Antiguo 02/04/2014, 11:44
Avatar de marlanga  
Fecha de Ingreso: enero-2011
Ubicación: Murcia
Mensajes: 1.024
Antigüedad: 13 años, 3 meses
Puntos: 206
Respuesta: Formulario

Como nota, el rollover se hace desde hace tiempo con CSS2 puro, usando la pseudo clase :hover sobre cualquier elemento ( y metiendo la imagen de fondo con backgrond-image).

El texto por defecto de un input vacío, se puede usar el atributo placeholder <input type="text" placeholder="prueba" />

http://jsfiddle.net/L3x36/

El placeholder no funcionará en explorer versión 8 y anteriores, pero el que aún use explorer, y peor, la versión 8, merece arder en el infierno.
Sin una sola linea de javascript.

Etiquetas: formulariocontacto
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 22:00.