Pergunta
Eu tenho uma imagem com a qual links para outra página usando <a href="..."> <img ...> </a>
.
Como posso fazer isso fazer uma postagem como se fosse um botão <input type="submit"...>
?
Solução
<input type="image" name="your_image_name" src="your_image_url.png" />
Isso enviará o your_image_name.x
e your_image_name.y
Valores enquanto ele envia o formulário, que são as coordenadas X e Y da posição que o usuário clicou na imagem.
Outras dicas
Mais genérico apropriado usando JQuery biblioteca mais próximo() e enviar() botões. Aqui você não precisa especificar o formulário Witch que deseja enviar, envia o formulário em que está.
<a href="#" onclick="$(this).closest('form').submit()">Submit Link</a>
Parece que você está tentando usar uma imagem para enviar um formulário ... nesse caso, use<input type="image" src="...">
Se você realmente deseja usar uma âncora, precisa usar o JavaScript:
<a href="#" onclick="document.forms['myFormName'].submit(); return false;">...</a>
Tipo de entrada = imagem fará isso por você.
Não testado / pode ser melhor:
<form action="page-you're-submitting-to.html" method="POST">
<a href="#" onclick="document.forms[0].submit();return false;"><img src="whatever.jpg" /></a>
</form>
<html>
<?php
echo $_POST['c']." | ".$_POST['d']." | ".$_POST['e'];
?>
<form action="test.php" method="POST">
<input type="hidden" name="c" value="toto98">
<input type="hidden" name="d" value="toto97">
<input type="hidden" name="e" value="toto aaaaaaaaaaaaaaaaaaaa">
<a href="" onclick="document.forms[0].submit();return false;">Click</a>
</form>
</html>
So easy.
So easy.
O que pode ser uma adição útil a isso é a possibilidade de alterar o pós-URL do botão extra para que você possa postar para URLs diferentes com botões diferentes. Isso pode ser alcançado definindo a propriedade 'ação' do formulário. Aqui está o código para isso ao usar o jQuery:
$('#[href button name]').click(function(e) {
e.preventDefault();
$('#[form name]').attr('action', 'alternateurl.php');
$('#[form name]').submit();
});
O atributo de ação tem alguns problemas com as versões jQuery mais antigas, mas, no último, você estará pronto.
Algo como esta página ?
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>BSO Communication</title>
<style type="text/css">
.submit {
border : 0;
background : url(ok.gif) left top no-repeat;
height : 24px;
width : 24px;
cursor : pointer;
text-indent : -9999px;
}
html:first-child .submit {
padding-left : 1000px;
}
</style>
<!--[if IE]>
<style type="text/css">
.submit {
text-indent : 0;
color : expression(this.value = '');
}
</style>
<![endif]-->
</head>
<body>
<h1>Display input submit as image with CSS</h1>
<p>Take a look at <a href="/2007/07/26/afficher-un-input-submit-comme-une-image/">the related article</a> (in french).</p>
<form action="" method="get">
<fieldset>
<legend>Some form</legend>
<p class="field">
<label for="input">Some value</label>
<input type="text" id="input" name="value" />
<input type="submit" class="submit" />
</p>
</fieldset>
</form>
<hr />
<p>This page is part of the <a href="http://www.bsohq.fr">BSO Communication blog</a>.</p>
</body>
</html>
Não se esqueça do elemento "botão" que pode lidar com mais um pouco de html dentro ...
Substituímos o botão Enviar por isso o tempo todo nos formulários:
<form method="post" action="whatever.asp">
<input type=...n
<input type="image" name="Submit" src="/graphics/continue.gif" align="middle" border="0" alt="Continue">
</form>
Clicar na imagem envia o formulário. Espero que ajude!