【问题标题】:How to post form by clicking in anchor element如何通过单击锚元素发布表单
【发布时间】:2013-12-24 21:49:29
【问题描述】:

如何通过点击元素提交表单?

我尝试了下面的代码,但 Chrome 使用 http GET 方法发送它。如何解决这个问题,以便使用 POST 方法发送表单?

<html>
<body>
    <form id="_form" method='post' target='_blank'>
        <input type="email" value="me@company.com" name="_email" />
        <a href='SendEMail?_entity=DokGReport&amp;_dokumnrs=135361'
           id='sendemail' class='button'>
            Send
        </a>
    </form>

    <script>
        $(function () {
            $('#sendemail').button({ icons: { primary: "ui-icon-mail-closed" } })
              .click(function () {
                  $('#_form')[0].action = $(this).attr('href');
                  $('#_form')[0].submit();
              });

        });
    </script>
</body>
</html>

【问题讨论】:

  • hmm...尝试将_entity 和您的其他参数添加为隐藏输入字段,即&lt;input type="hidden" name="_entity" value="DokGReport" /&gt; 等,并将它们从操作URL 中删除。
  • 为什么不将表单的动作定义为表单属性?
  • @Daiwei 我猜一下:在实际应用中可能会有多个链接,所以动作取决于他点击了哪个。
  • 表单包含多个元素。每个元素点击都应该发布到不同的 URL 并使用 POST 方法来获取所有表单数据。所以不能使用单个动作。
  • return false 添加到点击处理程序可以解决问题吗?

标签: javascript jquery forms jquery-ui form-submit


【解决方案1】:

你需要防止点击锚点的默认动作,即跟随链接:

    $(function () {
        $('#sendemail').button({ icons: { primary: "ui-icon-mail-closed" } })
          .click(function (e) {
              e.preventDefault(); // Don't follow the link normally
              $('#_form').attr('action', $(this).attr('href')).submit();
          });

    });

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多