Javascript 制作<;a>;行为与<;输入类型=";“图像”/>;?

Javascript 制作<;a>;行为与<;输入类型=";“图像”/>;?,javascript,jquery,html,Javascript,Jquery,Html,在我们的web应用程序中,我们为其他成员提供了一些消息传递功能。此表单正在接受整容,我需要替换一些功能: <input type="image" name="cancel" src="/rpc/button/?text=Cancel" /> <input type="image" name="delete" src="/rpc/button/?text=Delete Draft" /> <input type="image" name="send" src="/rp

在我们的web应用程序中,我们为其他成员提供了一些消息传递功能。此表单正在接受整容,我需要替换一些功能:

<input type="image" name="cancel" src="/rpc/button/?text=Cancel" />
<input type="image" name="delete" src="/rpc/button/?text=Delete Draft" />
<input type="image" name="send" src="/rpc/button/?text=Send Message" />
<input type="image" name="save" src="/rpc/button/?text=Save Draft" />
因为我们已经到了最后期限,所以没有时间重新编写这个项目的后端功能


如何用
标记替换这些旧的
,并且仍然传递
名称
属性?我希望尽可能避免为
创建新的CSS样式。

丑陋,但使用隐藏的表单字段:

<input type="hidden" id="clickedname" name="" value="" />


^^^^^^^^^^^^^^^^^^^^^^^^^

调整名称/值分配以适应-我记不清图像输入是如何提交的。

您需要使用JS,例如,在提交的隐藏字段中输入一个值,然后提交

我建议编写一个小型实用程序函数来替换
onclick
属性值。更好的是,在DOM就绪后附加功能,并使事情保持低调和本地化


然后
submit
执行您期望的操作,填充隐藏字段并提交表单。如果你真的不能改变后端,那么你也可以改变隐藏字段的名称,但是啊;似乎要更改后端以检查“action”字段或其他更干净的内容。

如果在脚本中添加name=“cancel”不起作用,听起来您可能需要对javascript有点兴趣。比如:

<input type="hidden" name="placeholder" value="true" />
<a class="button" name="cancel" href="javascript:" onclick="$(this).prev().attr('name', 'cancel'); $('#frmCompose').submit();">Cancel</a>

仅表单元素(
等)向表单提交值。要让
标记这样做,必须使用JavaScript将值添加到表单中

一种方法是添加隐藏的表单元素,并设置其名称/值

<a class="button" name="cancel" href="#">Cancel</a>
<input type="hidden" id="buttonClicked" />

可以将单个隐藏字段添加到表单中

<input type="hidden" id="action" value=""/>
因此,取消成为:

<a class="button" href="javascript:" onclick='$("#action").attr("name","cancel");$("#frmCompose").submit();'>Cancel</a>

然后发送成为:

<a class="button" href="javascript:" onclick='$("#action").attr("name","send");$("#frmCompose").submit();'>Send</a>


希望这有帮助,我认为最简单的方法就是用你想要的名字创建一个
,如下所示:

<input type="hidden" name="cancel" />
<a class="button" href="javascript:" onclick="$('#frmCompose').submit();">Cancel</a>


您可能不需要使用

html:

<button class="alike">Test</button>
<a href="#">Test</a>​

@eicto:我想他也想提交表单的其余部分。我想你需要使用JS,例如,在提交的隐藏字段中输入一个值,然后提交。@Rocket Correct,还有一个
to
subject
,和
body
被提交。另外,使用它的原因是什么?按钮/图像输入可以使用css设置样式,以查看same@eicto:是的,是的。在问题中,他使用了
$('frmCompose').submit(),所以我假设他在使用jQuery;我错过了最初的jQuery,因为它没有被标记为jQuery,而且我无法阅读。在这种情况下,我不会使用
prev
,这很脆弱。这是最接近我最终解决方案的答案:
,因为控制器正在检查:
if($\u POST['cancel\x'))
相反,如果
if($\u POST['cancel'])
因为输入是
type=“image”
@DaveNewton,我同意prev()很脆弱,只是用来说明功能。看起来velocityhead使用了一个类选择器,这无疑让人感觉更干净。
$("#action").attr("name","---ActionHere---");
<a class="button" href="javascript:" onclick='$("#action").attr("name","cancel");$("#frmCompose").submit();'>Cancel</a>
<a class="button" href="javascript:" onclick='$("#action").attr("name","send");$("#frmCompose").submit();'>Send</a>
<input type="hidden" name="cancel" />
<a class="button" href="javascript:" onclick="$('#frmCompose').submit();">Cancel</a>
<button class="alike">Test</button>
<a href="#">Test</a>​
button.alike,a {
 border: 0px;   
 text-decoration: underline;
 color: #00E;
 width: auto;
 cursor: pointer;
 background-color: inherit;
 font-family: 'Times New Roman';
 font-size: 16px;
}​