代码之家  ›  专栏  ›  技术社区  ›  aWebDeveloper

一表二动作

  •  1
  • aWebDeveloper  · 技术社区  · 14 年前

    嗨,我有几个表单域,我希望单击按钮A,将控件发送到操作1,但是 单击按钮2后,必须将其发送到操作2。目前我正在使用JS在单击时动态更改表单操作。但是还有其他的解决办法吗?我不能用同样的方法在提交后进行检查,这必须是两种不同的方法。

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

    3 回复  |  直到 10 年前
        1
  •  3
  •   deceze    14 年前

    一个窗体只能有一个操作。这是HTML的限制。要在客户端解决这个问题,您需要JavaScript。

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

        2
  •  0
  •   aWebDeveloper    14 年前

    我发现解决办法很少

    1. 常规JavaScript 单击按钮更改表单操作
    2. 阿贾克斯 单击单独的按钮将数据发送到两个单独的操作
    3. 按照建议 欺骗 在服务器端进行处理(在我的情况下这是不容易实现的)
        3
  •  0
  •   aWebDeveloper    10 年前

    HTML5具有 formaction 此的属性

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

    如果你需要,这里有一个回退。

    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
        }
      });
    }