如何在不提交表单的情况下使用struts2提交标签作为按钮?

Posted

技术标签:

【中文标题】如何在不提交表单的情况下使用struts2提交标签作为按钮?【英文标题】:How to use struts2 submit tag as button without submitting the form? 【发布时间】:2013-12-11 03:46:37 【问题描述】:

我在我的应用程序中使用 Struts2 框架,我的 JSP 页面上有一个按钮。那是

<s:submit type="button" name="btnSave" />

现在,我希望这个按钮表现得像普通的 html 按钮类型不应该提交表单并执行脚本 对onclick 事件起作用。该函数使用 Ajax 提交表单。

但是发生的事情是 Struts2 将其转换为

<input type="submit" id="add_btnSave" name="btnSave" value="Save"/>

我的表单已提交。

1) 如果我使用 HTML 按钮标签,它会弄乱 GUI。我表单的主题是 Ajax。

这是带有脚本的head 标记

<head>
<s:head theme="ajax"/>
<script type="text/javascript">

$("btnSave").click(function()
alert("aaa");
$.ajax(
url:
type:"POST",
dataType: "json",
error: function(XMLHttpRequest, textStatus, errorThrown)
alert('Error ' + textStatus);
alert(errorThrown);
alert(XMLHttpRequest.responseText);
,
success: function()
alert('SUCCESS');

);
);
</script>
</head>

我的body 标签是关注者:

<body>
<table border="1"  align="center">
<tr>
<td >
<s:tabbedPanel id="EmpDetail" useSelectedTabCookie="true">
<s:div id="one" label="Emp Reg." theme="ajax" tabindex="0" labelposition="top">
<center>
<s:form name="frmEmpReg" namespace="/" method="post">
EMPLOYEE REGISTRATIOM TAB<br>
<s:actionmessage />
<input type="hidden" name="empbean.id" value="<s:property value="empbean.id"/>"/>
<s:textfield label="Employee First Name" name="empbean.firstName"></s:textfield>
<s:textfield label="Employee Middle Name" name="empbean.middleName"></s:textfield>
<s:textfield label="Employee Last Name" name="empbean.lastName"></s:textfield>
<s:textfield label="Address" name="empbean.address"></s:textfield>
<s:textfield label="State" name="empbean.state"></s:textfield>
<s:textfield label="Employee Designation" name="empbean.designation"></s:textfield>
<s:submit name="btnSave" type="submit" value="Save" align="center"/>
</s:form>
</center>
</s:div>
<s:div>
..
..
Other Tabs
</s:div>
</s:tabbedPanel>
</td>
</tr>
</table>
</body>

任何人都知道如何使用 Struts2 处理它,那么请帮忙。

非常感谢您的帮助。

【问题讨论】:

【参考方案1】:

你试过preventDefault()吗?

$("btnSave").click(function(e)
    e.preventDefault();   
    //..rest of the code
);

【讨论】:

【参考方案2】:

如果您使用s:submit 标记,则呈现的HTML 输出为inputbutton 标记,但类型为submitimage 类型除外。您可以使用代码执行不提交表单的javascript onclick事件。

<s:submit type="button" onclick="return false;"/>

【讨论】:

点击我想像上面的代码一样运行 JS 代码:**$("btnSave").click(function() **!所以如果我把 onclick="return false;"我的 JS 代码不会被执行。我是不是哪里错了???

以上是关于如何在不提交表单的情况下使用struts2提交标签作为按钮?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Django、Ajax、jQuery 在不刷新页面的情况下提交表单?

如何在不重新加载的情况下提交表单? [复制]

在不使用 JavaScript 的情况下,如何在选择字段集中时使 Enter 键提交表单?

如何在不重新加载页面的情况下提交表单[重复]

如何在不提交的情况下使用 jQuery Validator 验证表单的第一部分?

如何在不通过 jQuery 提交的情况下强制进行 html5 表单验证