输入类型图像提交表单值?

问题描述 投票:37回答:13

我正在使用此代码尝试通过表单提交值,但它似乎没有提交任何内容......

我通常会使用复选框或单选按钮来选择多个选项,但我想使用图像来执行此操作。

这段代码错了吗?

<input id="test1" name="test1" type="image" src="images/f.jpg" value="myValue" alt="" />

所以我想传递value =“myValue”中的值。

表单工作正常,这不是问题,我只需要帮助输入部分不提交,因为我知道它的工作原理。

谢谢

html forms
13个回答
54
投票

输入类型=“图像”仅将该图像定义为提交按钮,而不是作为可以将值传递给服务器的输入。


0
投票

好吧,如果我在你的位置,我会这样做。我将有一个隐藏的字段,基于输入图像字段,我将更改隐藏字段值(jQuery),然后最终提交其值反映图像字段的隐藏字段。


0
投票

您可以使用formaction属性(对于type = submit / image,覆盖表单的操作)并通过URL(GET-request)传递非敏感值。

发布的问题在旧浏览器上不是问题(例如在Chrome 49+上)。


-3
投票

加上这个

    name="myvalue"

到你的标签。


-7
投票

要提交表格,您可以使用:

<input type="submit">

要么

<input type="button"> + Javascript 

我从来没有听说过如此疯狂的家伙尝试使用图像或复选框发送表单,如你所愿:))


34
投票

使用type =“image”是有问题的,因为传递值的能力因某些愚蠢的理由而被禁用。无论如何,虽然它不是可定制的,因此非常漂亮,你仍然可以使用你的图像,只要它们是type =“button”的一部分。

<button type="submit" name="someName" value="someValue"><img src="someImage.png" alt="SomeAlternateText"></button>

希望这可以帮助! ^ _ ^


7
投票

我和你在同一个地方,最后我找到了一个简洁的答案:

<form action="xx/xx" method="POST">
  <input type="hidden" name="what you want" value="what you want">
  <input type="image" src="xx.xx">
</form>

6
投票

我发现图像按钮会返回响应,但是你不应该使用值选项。我看到的回归是两个版本的name="MYNAME".X.Y结尾。

例如:

<input type="image" src="/path-to/stop.png" name="STOP" width="25" height="25" align="top" alt="Stop sign">

这是在你的<form></form>。如果单击图像,返回的是带有数值的STOP.XSTOP.Y。存在任何一个表示单击了STOP图像按钮。您不需要任何特殊代码。只需将其视为另一种“提交”按钮,即返回一对增强的NAME。

我在Safari,Firefox和Chrome上试过这个。 Safari没有显示图像,但应该找到它的位置,我的光标变成了手指图标,我可以点击它。


4
投票

某些浏览器(IIRC只是某些版本的Internet Explorer)只发送图像映射的坐标(在name.x和name.y中)并忽略该值。这是一个错误。

解决方法是:

  • 只有一个提交按钮并使用隐藏的输入来发送值
  • 使用常规提交按钮而不是图像映射
  • 使用唯一名称而不是值并检查name.x / name.y的存在

3
投票

这是我试图做的以及我是如何做到的。我想你想做类似的事情。我有一个有几行的表,每行都有一个带有类型图像的输入。我想在用户点击该图像按钮时传递id。如您所知,标记中的值将被忽略。相反,我在表格顶部添加了一个隐藏的输入并使用javascript我在发布表单之前将正确的ID放在那里。

<input type="image" onclick="$('#hiddenInput').val(rowId) src="...">

这样,您的表单就会提交正确的ID。


1
投票

您可以使用单选按钮/复选框并将其设置为隐藏css中的按钮,然后为其添加带图像的标签。

input[type="radio"] {display: none}
input[type="radio"] + label span {display: block}

然后在页面上:

<input type="radio" name="emotion" id="mysubmitradio" />
        <label for="mysubmitradio"><img src="images/f.jpg" />
    <span>if you need it</span></label>

然后将其设置为使用javascript提交:

document.forms["myform"].submit();

1
投票

解:

<form name="frmSeguimiento" id="frmSeguimiento" method="post" action="proc_seguimiento.php">  
    <input type="hidden" name="accion" id="accion"/>


<input name="save" type="image" src="imagenes/save.png" alt="Save" onmouseover="this.src='imagenes/save_over.png';" onmouseout="this.src='imagenes/save.png';" value="Save" onclick="validaFrmSeguimiento(this.value);"/>


function validaFrmSeguimiento(accion)
{
    document.frmSeguimiento.accion.value=accion;

}

问候,jp


1
投票

当用于提交表单时,type =“image”的输入不会发送其名称/值对。对我来说,这听起来像一个错误,但事实就是如此。

为了解决这个问题,你可以用input替换类型=“submit”的button,然后将img元素放入其中。

不幸的是,这会导致您的图像处于丑陋的HTML“按钮”中。但是,假设您没有在任何地方使用标准HTML按钮,您可以覆盖样式表,然后一切都应该按预期工作:

button, input[type="submit"], input[type="reset"] {
	background: none;
	color: inherit;
	border: none;
	padding: 0;
	font: inherit;
	cursor: pointer;
	outline: inherit;
}
<form action="/post">
<input name="test">
<button type="submit" name="submit_button" value="submitted">
<img src="https://via.placeholder.com/32" alt="image">
</button>
</form>
© www.soinside.com 2019 - 2024. All rights reserved.