【问题标题】:Multiple submit buttons, javascript多个提交按钮,javascript
【发布时间】:2011-08-08 04:55:02
【问题描述】:

我有一个带有一个表单和两个按钮的 servlet。一个是提交按钮,另一个是删除按钮。默认操作是 Updater.do,但是当我单击 Delete 按钮时,我有一个函数可以将操作更改为 Deleter.do。这工作正常。我现在遇到的问题是,当我进入确认对话框时,如果用户单击“确定”,那么它会继续执行 Deleter.do,如我所愿。但是,当他们单击“取消”时,它似乎会转到“Updater.do”,而不是停留在页面上。我将如何解决这个问题?我尝试删除默认操作并让 Submit 和 Delete 都调用 changeAction,但这不起作用。这是javascript chgAction。

function chgAction(action_name) {
  if (action_name=="Delete") { 
    var answer = confirm("Are you sure you want to delete this Person? This action cannot be undone.") 
    if (answer) { document.forms[0].action = \"Deleter.do\"; } 
  }
}                  

【问题讨论】:

  • 您是否尝试过清除“取消”操作的 else 子句?
  • 我已尝试执行“”操作。问题是,有表单数据,如果单击取消,我不希望页面重新加载,我不想发生任何事情。通过在单击取消时执行“”操作,重新加载页面 - 它表示此 URL 不支持 HTTP 方法发布。因此,我必须同时更改 HTTP 方法和 else 子句中的操作,这意味着我还必须在每次单击 OK 或单击提交按钮时更改方法。即使那样,表单数据也会被清除。
  • 你好,你能把表格代码也发一下吗?我想我已经猜到您的问题了,只是想通过查看您的表单来确认。
  • out.println("<form name=\"form1\" action=\"UpdateSRF.do\" method=\"post\" onsubmit=\"return chgAction()\">"); onsubmit 部分,我刚刚添加。
  • 我认为问题在于 onsubmit 应该返回 chgAction("something")。但是,我不知道“某事”应该是什么

标签: java javascript forms servlets button


【解决方案1】:

尝试在“取消”部分添加return false

function chgAction(action_name) {
  if (action_name=="Delete") { 
    var answer = confirm("Are you sure you want to delete this Person? This action cannot be undone.") 
    if (answer) { 
        document.forms[0].action = \"Deleter.do\"; 
    } 
    else {
        return false;    //ADDED
    }
  }
}

【讨论】:

  • 这似乎不起作用,虽然我不知道为什么它不应该。
  • Onsubmit 必须返回 chgAction,但我不知道应该将什么传递给函数。
【解决方案2】:

如果提交和删除都是提交按钮,只需给它们起不同的名称。单击的按钮的名称将与请求一起发送,以便服务器对其进行排序。

调用确认对话框时,必须从监听器返回false,否则表单仍会提交:

<form onsubmit="return chgAction(...);"

并且 chgAction 必须按照 Nivas 的建议返回 false

【讨论】:

  • 我应该在 onsubmit 的 chgAction() 括号内放什么?
  • 好的,我找到了问题,但没有找到解决方案。我确实需要在 onsubmit 中调用 chgAction(),但我不知道将什么传递给这个方法。
  • 你说你已经让监听器工作好了,所以我假设你从删除按钮传递“删除”,从“更新”按钮传递任何其他内容。
  • 没有意识到我可以将点击按钮的名称与请求一起发送-谢谢
猜你喜欢
  • 2013-04-16
  • 1970-01-01
  • 2014-03-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多