Javascript 在使用strutst html标记时,如何在提交按钮上调用onclick事件?
我有一个父页面,其中有一个元素。单击该元素后弹出窗口。在弹出窗口中有一个文本框和提交按钮。现在我想刷新父页面时,提交按钮弹出窗口点击。 我有刷新父页面的解决方案:Javascript 在使用strutst html标记时,如何在提交按钮上调用onclick事件?,javascript,java,jsp,struts,struts-html,Javascript,Java,Jsp,Struts,Struts Html,我有一个父页面,其中有一个元素。单击该元素后弹出窗口。在弹出窗口中有一个文本框和提交按钮。现在我想刷新父页面时,提交按钮弹出窗口点击。 我有刷新父页面的解决方案: window.onload = function() { window.opener.location.reload(); } 我已经在弹出的jsp页面中添加了这个脚本。所以每当我点击父页面上的元素时,弹出窗口就会出现,父页面会被刷新(想跳过这个),然后我会在弹出窗口的文本框中添加一些文本并提交数据,因为它是提交按钮,弹出窗口会
window.onload = function()
{
window.opener.location.reload();
}
我已经在弹出的jsp页面中添加了这个脚本。所以每当我点击父页面上的元素时,弹出窗口就会出现,父页面会被刷新(想跳过这个),然后我会在弹出窗口的文本框中添加一些文本并提交数据,因为它是提交按钮,弹出窗口会再次重新加载,父页面会被刷新(这是预期的情况)。由于我在弹出页面上使用了window.onload
,所以它会被刷新两次,我想跳过第一次刷新。
所以我决定点击提交按钮进行刷新。
弹出页面JSP代码:
<td align="center">
<html:submit styleId="btn_add" property="submitButton" onclick="formConfirmOff();" value="Add" />
</td>
document.getElementById("btn_add").onclick = function(){
window.opener.location.reload();
}
$(document).ready(function() {
$("#frm_addSpeedData").submit(function(event) {
//event.preventDefault();
$.ajax({
type: "POST", //chose your request type method POST or GET
url: "/webapp/addSpeedDataAction.do", // your struts action url
data: $(this).serialize(),
success: function() {
window.opener.location.reload(); // callback code here
}
})
})
});
但是使用上面的脚本会给我一个错误,无法设置属性onclick of null
所以这可能是因为脚本是在DOM加载之前执行的。所以我加入了脚本
window.onload = function(){
document.getElementById("btn_add").onclick = function(){
window.opener.location.reload();
}
}
但何时显示带有选项的确认导航对话框离开此页面并停留在此页面上。
可能是什么问题。传递给onclick的函数顺序是否重要?
我只想在使用提交按钮将数据添加到弹出子页面时刷新父页面 编辑:
<td align="center">
<html:submit styleId="btn_add" property="submitButton" onclick="formConfirmOff();" value="Add" />
</td>
document.getElementById("btn_add").onclick = function(){
window.opener.location.reload();
}
$(document).ready(function() {
$("#frm_addSpeedData").submit(function(event) {
//event.preventDefault();
$.ajax({
type: "POST", //chose your request type method POST or GET
url: "/webapp/addSpeedDataAction.do", // your struts action url
data: $(this).serialize(),
success: function() {
window.opener.location.reload(); // callback code here
}
})
})
});
此代码有时有效,但有时无效。
表示当弹出窗口打开时,我在弹出窗口上提交数据。然后在成功时父窗口被刷新。但我仍然无法在父页面上看到更新。
可能是什么问题?您需要使用对服务器的AJAX调用手动执行此操作,成功执行后,您将刷新父页面 以下是使用的示例:
我只想在使用提交按钮将数据添加到弹出子页面时刷新父页面。因此,您想首先执行服务器端代码,然后刷新父页面?是的,一旦在弹出窗口上完成表单提交,刷新父页面在我的情况下,似乎是先执行刷新,然后再执行服务器代码,因此,使用旧数据重新加载父页面:(如何避免重新发布表单数据?您可以使用
event.preventDefault()
查看我更新的answer.window.onload=function(){document.getElementById(“btn_add”).onclick=function(event){event.preventDefault();window.opener.location.reload();})我可以这样使用吗?它还将阻止表单提交..!!上述代码无法调用服务器操作。那么,只有在弹出页面上提交数据时,才刷新父级的最佳方法是什么