2011-11-10 34 views
6

Tengo un formulario que tiene el botón Enviar en forma de una imagen. Cuando el usuario hace clic en el botón de imagen, el botón de imagen debe jugar el rol de botón de enviar.Botón Enviar imagen dentro de un formulario

Código de ejemplo:

<form action="page.php" method="POST"> 
    <input type="image" name="btn_opentextbox" src="image.png" value="Submit" /> 
</form> 

manija de presentación:

if($_POST['btn_opentextbox']) 
{ 
    //do something 
} 

Sorprendentemente, el código anterior se utiliza para trabajar perfectamente bien en Firefox. Sin embargo, una vez que actualicé mi Firefox ayer, no funcionó en absoluto. Hago clic en el botón, la página se actualiza y no pasa nada. El código tampoco funciona en IE.

Nota: funciona en Chrome.

quiero que funcione en Firefox, IE, etc

¿Alguna sugerencia?

Respuesta

6

se puede añadir un campo oculto

<input type="hidden" name="action" value="Submit Form"> 

y en php se puede hacer esto

if($_POST['action'] == "Submit Form"){ 
do something 
} 

esperanza esta ayuda.

+0

uno inteligente. Lo intentaré y te lo haré saber. – user311509

+0

Primero compruebe que el elemento de matriz 'isset()' para evitar los mensajes 'E_NOTICE'. – MrWhite

2

Compruebe btn_opentextbox_x o btn_opentextbox_y en su lugar. (En realidad es . no _ pero PHP lo descompone).

Algunos navegadores no pueden enviar el valor para los mapas de imágenes del lado del servidor, solo las coordenadas.

Y parece que olvidó el atributo alt.


Como alternativa, utilizar un botón de envío real en lugar de un mapa de imagen:

<button type="submit" name="btn_opentextbox" value="submit"><img src="image.png" alt="Submit"></button> 

... pero tenga en cuenta que algunas versiones de IE enviará el contenido HTML en lugar del valor cuando se presentó.

0

¿Tiene varios botones en ese formulario y necesita saber que se envió el formulario? Si sólo hay un único botón de enviar se sugiere emplear siguiente código:

if ($_SERVER['REQUEST_METHOD'] == 'POST') { 
    // process form submission 
    header('Location: page.php?result=success'); 
} 

De esta manera usted estará seguro de si la forma se presentó y también evitar la doble presentación si se presenta un botón de recarga de usuario después de que se presentó la forma.

3

para una imagen botón de envío

código php es

if(isset($_POST['btn_opentextbox_X']) || isset($_POST['btn_opentextbox_Y'])) 
{ 
    //do something 
} 
2

El buen código php es:

<input type='image' src='../images/blanc.gif' width='596' height='35'  onFocus='form.submit' name='btn_opentextbox'/> 


    if ($_POST["btn_opentextbox_x"]) && ($_POST["btn_opentextbox_y"]) 
    { 

...... 
    } 
+0

"buen código php"? Tal como está en este momento, su código generará un mensaje 'E_NOTICE' cuando el formulario no sea enviado por el botón de envío de imágenes. Debería verificar que el elemento de matriz 'isset()'. – MrWhite

+0

... también '$ _POST [" btn_opentextbox_x "]' podría contener legítimamente el valor '0' y, por lo tanto, evaluar a falso. – MrWhite

Cuestiones relacionadas