Forms 一表二动作

Forms 一表二动作,forms,cakephp,Forms,Cakephp,嗨,我有几个表单字段,我想点击按钮a将控件发送到操作1,但是 单击按钮2时,必须将其发送到操作2。目前,我正在使用js在单击时动态更改表单操作。但还有其他解决办法吗。我不能做的检查后,提交在同一个方法-必须是两个不同的方法 本例中的两个按钮是查看(需要显示html数据)和下载(数据与csv文件相同)。我使用的是cakephp 1.2,但我觉得这更像是一个通用问题一个表单只能有一个操作。这是HTML的一个限制。要在客户端解决这个问题,需要Javascript 听起来更好的办法是给每个提交按钮一个独

嗨,我有几个表单字段,我想点击按钮a将控件发送到操作1,但是 单击按钮2时,必须将其发送到操作2。目前,我正在使用js在单击时动态更改表单操作。但还有其他解决办法吗。我不能做的检查后,提交在同一个方法-必须是两个不同的方法


本例中的两个按钮是查看(需要显示html数据)和下载(数据与csv文件相同)。我使用的是cakephp 1.2,但我觉得这更像是一个通用问题

一个表单只能有一个操作。这是HTML的一个限制。要在客户端解决这个问题,需要Javascript


听起来更好的办法是给每个提交按钮一个独特的
名称
。这将像其他表单元素一样提交,因此您可以在控制器中检测单击了哪个按钮。从这里开始,只需在控制器的正常输出和下载之间切换一些视图逻辑即可。

我发现解决方案很少

  • 常规JavaScript单击按钮即可更改表单操作
  • AJAX单击单独的按钮,将数据发送到两个单独的操作
  • 正如deceze所建议的那样,在服务器端进行处理(在我的例子中,这是不容易做到的)
  • HTML5对此有一个属性

    <form action="/url" id="myForm">
         <input type="submit" value="save1" formAction="/url1" />
         <input type="submit" value="save2" formAction="/url2" />
    </form>
    

    停止不要尝试这个。让您的(服务器端)控制器根据提交的数据在内部转发请求(只有激活的按钮才会成功)。下面是一个示例,谢谢,但您能否粘贴我需要查看的确切代码或行号+1给您
    if (!('formAction' in document.createElement('input'))){
     $('form').on('click', 'input[type=submit]', function (e) {
        var attr = this.getAttribute('formAction');
    
        if (attr) {
            this.action = attr; //Set the form's action to formAction
        }
      });
    }