【问题标题】:submit a form in jQuery [duplicate]在jQuery中提交表单[重复]
【发布时间】:2014-05-22 12:02:57
【问题描述】:

我有这样的表格

<form id="add-to-cart" action="http://example.com/add_to_form" method="post">
  <div>
  <input type="hidden" name="cartkey" value="">
  <input type="hidden" name="id" value="10">
  <a href="#" id="10"  class="buy-now-button">buy Now</a>
  </div>
  <div>
  <input type="hidden" name="cartkey" value="">
  <input type="hidden" name="id" value="12">
  <a href="#" id="12" class="buy-now-button">buy Now</a>
  </div>
  <div>
  <input type="hidden" name="cartkey" value="">
  <input type="hidden" name="id" value="19">
  <a href="#" id="19"  class="buy-now-button">buy Now</a>
  </div>    
</form>

我想通过获取 id 使用 jquery 提交表单。那么有人可以告诉我该怎么做吗?

更新 您可以通过每个链接看到我有 id。我只想将此 id 传递给表单操作。

【问题讨论】:

  • 提交到哪里?到表单的 action 属性?既然您可以传统地使用 jQuery 来提交表单,为什么还要使用呢?
  • 您的 HTML 无效。您不能重复 ID;它们都应该是独一无二的。
  • 你没有提交按钮?
  • 而不是'id',尝试更多意思的全名,如'product_id'之类的
  • 谁能回答这个问题?

标签: javascript jquery html


【解决方案1】:

尝试使用.submit()函数手动触发表单的提交,

$('#add-to-cart').submit();

【讨论】:

  • @Downvoter:你能透露你投票的原因吗?这样我和观众就可以知道我的帖子出了什么问题..
  • 表单中没有提交按钮,所以我认为这不起作用。
  • 我没有投反对票 :)
  • 提交按钮或无提交按钮,如果表单上触发了提交事件,则表单将提交。
  • @AamirAfridi 如果您收听submit 事件,您可能会遇到没有提交按钮的问题。但是在这里我们触发它,所以它会正常工作。
【解决方案2】:

您可以使用 .submit() 函数通过 id 的 .. 提交您的表单

【讨论】:

    【解决方案3】:

    你需要像这样尝试。否则你不能得到结果。

    <form id="add-to-cart" action="http://example.com/add_to_form" method="post">
     <div>
      <input type="hidden" name="cartkey" value="">
      <input type="hidden" name="id" value="">
      <a href="#" id="10"  class="buy-now-button">buy Now</a>
     </div>
     <div>
       <a href="#" id="12" class="buy-now-button">buy Now</a>
     </div>
     <div>
      <a href="#" id="19"  class="buy-now-button">buy Now</a>
     </div>    
     </form>
    <script>
    $('.buy-now-button').click(function(){
       $('[name="id"]').val($(this).attr("id"));
       $('#add-to-cart').submit();
    });
    </script>
    

    【讨论】:

      【解决方案4】:

      As mentioned in this SO article,如果您给提交按钮一个name 属性(显然,一个value 来发布),您可以回发按钮的

      来自链接的问题(带有更正的代码 sn-p):

      <input type="submit" name="respond" value="Confirm" class="btn_confirm" />
      <input type="submit" name="respond" value="Ignore" class="btn_ignore" />
      

      将回传到服务器的“响应”值将包含"Ignore""Confirm",具体取决于单击的按钮。

      我建议添加这些属性,以便表单提交将返回您想要的值,并且不需要自定义代码或自定义事件。这应该更容易理解。

      【讨论】:

        【解决方案5】:
            <form id="add-to-cart" action="test.php" method="post">
              <div>
                  <input type="hidden" name="cartkey" value="">
                  <input type="hidden" name="id" value="10">
                  <a href="#" id="10"  class="buy-now-button">buy Now</a>
              </div>
              <div>`enter code here`
              <input type="hidden" name="cartkey" value="">
                <input type="hidden" name="id" value="12">
              <a href="#" id="12" class="buy-now-button">buy Now</a>
              </div>
              <div>
              <input type="hidden" name="cartkey" value="">
                <input type="hidden" name="id" value="19">
              <a href="#" id="19"  class="buy-now-button">buy Now</a>
              </div>    
              <input type="hidden" name="currentId" id="currentId" >
            </form>
        
            <script>
            $( ".buy-now-button" ).click(function() {
               $( "#currentId" ).val(this.id);
              $( "#add-to-cart" ).submit();
            });
            </script>
        
        Your can get the current id from $_POST['currentId']
        

        【讨论】:

          【解决方案6】:

          由于您有多个同名输入,您的表单看起来更像三个表单。

          <form class="add-to-cart" action="http://example.com/add_to_form" method="post">
            <input type="hidden" name="cartkey" value="">
            <input type="hidden" name="id" value="10">
            <button type="submit">buy Now</button>
          </form>
          <form class="add-to-cart" action="http://example.com/add_to_form" method="post">
            <input type="hidden" name="cartkey" value="">
            <input type="hidden" name="id" value="12">
            <button type="submit">buy Now</button>
          </form>
          <form class="add-to-cart" action="http://example.com/add_to_form" method="post">
            <input type="hidden" name="cartkey" value="">
            <input type="hidden" name="id" value="19">
            <button type="submit">buy Now</button>
          </form>
          

          现在,如果您想通过 ajax 提交表单,您可以执行以下操作:

          $(".add-to-cart").on("submit", function(e) {
              e.preventDefault();
              e.stopPropagation();
              $.ajax({
                  url: $(this).attr("action"),
                  method: "POST",
                  data: $(this).serialize()
              });
          });
          

          更新:

          但除非你想在 javascript 被停用的情况下回退,否则你不需要任何形式:

          <a href="#" id="10"  class="buy-now-button">buy Now</a>
          <a href="#" id="12"  class="buy-now-button">buy Now</a>
          <a href="#" id="19"  class="buy-now-button">buy Now</a>
          

          JavaScript:

          $(".buy-now-button").on("click", function(e) {
              e.preventDefault();
              e.stopPropagation();
              $.ajax({
                  url: "http://example.com/add_to_form",
                  method: "POST",
                  data: {id: $(this).attr("id")}
              });
          });
          

          【讨论】:

          • 为什么要添加提交事件?该事件中提到的所有内容不是默认(或不需要)行为吗?除了 Ajax 调用,但我在问题中没有看到任何提及。
          • "现在如果你想通过 ajax 提交表单"
          • 否则不需要提交处理程序。
          猜你喜欢
          • 1970-01-01
          • 2011-02-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-10-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多