如何获得button的名字

holsten32 2009-10-16 08:05:31

<form>
<input type="button" value="插入" name="insert" onclick="document.form[0].submit()"/>
<input type="button" value="删除" name="delete" onclick="document.form[0].submit()"/>
<input type="button" value="修改" name="modify" onclick="document.form[0].submit()"/>
</form>

假如我有多个button,我在submit之后我要知道我是点击的哪个按钮.也就是说我提交之后我要得到相应的button的name,在action中我应该怎么得到啊?是用request对象么?有人知道么?
...全文
864 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
chaojiliubi 2009-10-25
  • 打赏
  • 举报
回复
1.不建议把value设置成中文,可以用 1,2,3 然后再servlet中进行判断


2.可以使用javascript改变 action 不同的button触发不同的 function提交到 不同的 action处理
moneyNUMBER_1 2009-10-24
  • 打赏
  • 举报
回复
如果在servlet中获得的不是名字是这个名字的value
howsun_zh 2009-10-18
  • 打赏
  • 举报
回复
<form>
<input type="button" value="插入" name="insert" onclick="document.form[0].submit()"/>
<input type="button" value="删除" name="delete" onclick="document.form[0].submit()"/>
<input type="button" value="修改" name="modify" onclick="document.form[0].submit()"/>
</form>

假如用户点了“插入”按钮,这时:

request.getParameter("insert")=="插入";
request.getParameter("delete")==null;
request.getParameter("modify")==null;
//以此类推!也就是说无论多少submit类型的按钮,都只有一个不为空。这时在Struts的Action中以用反射方法来做:
public class MyAction extends Action{//注意,这里并不需要继承DispatchAction

public ActionForward execute(ActionMapping mapping, ActionForm from, HttpServletRequest request, HttpServletResponse response) throws Exception {
String func = {"insert","delete","modify"};
String methodName = null;
for(String f : func){
if(request.getParameter(f) != null){
methodName = request.getParameter(f);
break;
}
}
try {
//利用反射技术让程序自动找到要处理的方法并执行之
Method method = this.clazz.getDeclaredMethod(methodName, ActionMapping.class, ActionForm.class, HttpServletRequest.class, HttpServletResponse.class);
return (ActionForward)method.invoke(this, mapping, from, request, response);
} catch (Exception e) {
request.setAttribute("message", e.getMessage());
return mapping.findForward("message");
}
}

public ActionForward insert(ActionMapping mapping, ActionForm from, HttpServletRequest request, HttpServletResponse response) throws Exception {
//todo
}


public ActionForward delete(ActionMapping mapping, ActionForm from, HttpServletRequest request, HttpServletResponse response) throws Exception {
//todo
}


public ActionForward modify(ActionMapping mapping, ActionForm from, HttpServletRequest request, HttpServletResponse response) throws Exception {
//todo
}

}

ddshuaige 2009-10-17
  • 打赏
  • 举报
回复
掉了什么?
zl3450341 2009-10-17
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 ddshuaige 的回复:]
这不是你那个struts急急急的问题吗?
按照你的要求来的话你用一个action就可以了,设置一个隐藏域传值进去判断。
可以这样写
<script language="javascript">
function submitForm(ac){
document.getElementById("op").value=ac;
document.form[0].submit();
}
</script>

<form action="xx.do">
    <input type="hidden" name="op"/>
    <input type="button" value="插入" name="insert" onclick="submitForm('insert')"/>
    <input type="button" value="删除" name="delete" onclick="submitForm('delete')"/>
    <input type="button" value="修改" name="modify" onclick="submitForm('modify')"/>
</form>


如果是继承dispatchaction写多个action
可以这样写
<script language="javascript">
function submitForm(ac){
document.form[0].action="xxx.do?op="+ac;
document.form[0].submit();
}
</script>

<form>
    <input type="button" value="插入" name="insert" onclick="submitForm('insert')"/>
    <input type="button" value="删除" name="delete" onclick="submitForm('delete')"/>
    <input type="button" value="修改" name="modify" onclick="submitForm('modify')"/>
</form>

[/Quote]

你下面这段掉了几句吧
ddshuaige 2009-10-17
  • 打赏
  • 举报
回复
这不是你那个struts急急急的问题吗?
按照你的要求来的话你用一个action就可以了,设置一个隐藏域传值进去判断。
可以这样写
<script language="javascript">
function submitForm(ac){
document.getElementById("op").value=ac;
document.form[0].submit();
}
</script>

<form action="xx.do">
<input type="hidden" name="op"/>
<input type="button" value="插入" name="insert" onclick="submitForm('insert')"/>
<input type="button" value="删除" name="delete" onclick="submitForm('delete')"/>
<input type="button" value="修改" name="modify" onclick="submitForm('modify')"/>
</form>




如果是继承dispatchaction写多个action
可以这样写
<script language="javascript">
function submitForm(ac){
document.form[0].action="xxx.do?op="+ac;
document.form[0].submit();
}
</script>

<form>
<input type="button" value="插入" name="insert" onclick="submitForm('insert')"/>
<input type="button" value="删除" name="delete" onclick="submitForm('delete')"/>
<input type="button" value="修改" name="modify" onclick="submitForm('modify')"/>
</form>
hesai52013141997 2009-10-17
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 swandragon 的回复:]
把点击的button的名字保存起来,传给后台
HTML code<form><inputtype="button" value="插入" name="insert" onclick="alert(this.name);"/><inputtype="button" value="删除" name="delete" onclick="alert(this.name);"/><inputtype="button" value="修改" name="modify" onclick="alert(this.name);"/></form>
[/Quote]

这个适合,简单而适用
geian 2009-10-17
  • 打赏
  • 举报
回复
我同意1楼的思路,楼主可以借鉴一下。
liguangwen86 2009-10-17
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 zhiqiangzhan 的回复:]
换个思路,你用一个隐藏表单域来保存你当前点击的action,服务器端只要得到action的值就知道你做了什么操作。
HTML code<formaction="abc.php" method="get"><inputtype="hidden" name="action"/><inputtype="button" value="插入" name="insert" onclick="document.forms[0].action.value='insert'; document.forms[0].submit()"/><inputtype="button" value="删除" name="delete" onclick="document.forms[0].action.value='delete'; document.forms[0].submit()"/><inputtype="button" value="修改" name="modify" onclick="document.forms[0].action.value='modify'; document.forms[0].submit()"/></form>
[/Quote]


可以
wanli209 2009-10-17
  • 打赏
  • 举报
回复
是Struts2的话就是
Map map = ActionContext.getContext().getParameters();
map 里面包括了所有提交的表单属性
点的哪个submit 就会有那个 其他没有点的 就没有
moneyNUMBER_1 2009-10-16
  • 打赏
  • 举报
回复
通过不同的名字来取得button的值
document.表单名.value;取值
swandragon 2009-10-16
  • 打赏
  • 举报
回复
把点击的button的名字保存起来,传给后台

<form>
<input type="button" value="插入" name="insert" onclick="alert(this.name);"/>
<input type="button" value="删除" name="delete" onclick="alert(this.name);"/>
<input type="button" value="修改" name="modify" onclick="alert(this.name);"/>
</form>
cdsnmdl 2009-10-16
  • 打赏
  • 举报
回复
可以提交给不同的三个action或者一个action的三个方法处理也可以呀
James__Zhan 2009-10-16
  • 打赏
  • 举报
回复
换个思路,你用一个隐藏表单域来保存你当前点击的action,服务器端只要得到action的值就知道你做了什么操作。

<form action="abc.php" method="get">
<input type="hidden" name="action" />
<input type="button" value="插入" name="insert" onclick="document.forms[0].action.value='insert'; document.forms[0].submit()"/>
<input type="button" value="删除" name="delete" onclick="document.forms[0].action.value='delete'; document.forms[0].submit()"/>
<input type="button" value="修改" name="modify" onclick="document.forms[0].action.value='modify'; document.forms[0].submit()"/>
</form>

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧