【问题标题】:JQuery created form created is not submittingJQuery创建的表单创建未提交
【发布时间】:2016-02-23 18:45:45
【问题描述】:

我对 Jquery 编码很陌生,我遇到了一个我无法弄清楚原因的问题:

我有一个包含按钮的表格,单击这些按钮将允许用户编辑同一行的值:

<table border="1">
  <tr>
    <td>data1</td>  
    <td>data2</td>  
    <td>data3</td>  
    <td><input type="button" class="alter" value="Alter"></td>
  </tr>
  ...
  <tr>
    <!-- Same structure as row above -->
  </tr>
  ...
</table>

当我单击按钮时,我希望将同一表行更改为:

<table border="1">
  <tr>
    <form action="" method="post">
      <td><input type="hidden" name="editData1" value="data1">data1</td>  
      <td><input type="number" name="editData2" value="data2"></td>  
      <td><input type="number" name="editData3" value="data3"></td>  
      <td><input type="submit" name="editData" value="Edit"></td>
    </form>
  </tr>
  ...
  <tr>
    <!-- Remain unchanged -->
  </tr>
  ...
</table>

如您所见,我使用 Jquery 来执行此操作:

$(document).ready(function(){

  $('.alter').click(function(){

    var data1 = $(this).closest('tr').find('td:first').text();
    var data2 = $(this).closest('tr').find('td:nth-child(2)').text();
    var data3 = $(this).closest('tr').find('td:nth-child(3)').text();

    $(this).closest('tr').html('<form action="" method="post"><td><input type="hidden" name="editData1" value="'+data1+'">'+data1+'</td><td><input type="number" name="editData2" value="'+data2+'"></td><td><input type="number" name="editData3" value="'+data3+'"></td><td><input type="submit" name="editData" value="Edit"></td></form>');


  }); 
});

问题是:

当我单击 Alter 按钮时,Jquery 会自动对表中的所有结构进行更改,插入表单、输入和提交按钮,但是当我尝试单击 Edit 按钮提交表单时,什么也没有发生。

我什至将 Jquery 在 tr 标签之间插入的 html 复制到了另一个页面,并测试了表单是否正在提交,一切正常!

谁能帮我弄清楚为什么会这样?提前致谢!

【问题讨论】:

  • 您只在用户开始编辑时编写了 html 级别的更改,但您没有编写用户完成编辑时发生的情况。 $('input[name="editData"]').click(function(){ RESTORE TABLE, SAVE CHANGES, ETC });

标签: jquery html forms form-submit


【解决方案1】:

&lt;tr&gt; 标记中包含&lt;form&gt; 标记然后在其中包含&lt;td&gt; 标记是无效的HTML。当您生成这些元素时,浏览器会智能并在第一个 td 之前自动关闭表单,因此提交按钮不在表单内。

试试这个:

$(this).closest('tr').html('<td><form action="" method="post"><span><input type="hidden" name="editData1" value="'+data1+'">'+data1+'</span><span><input type="number" name="editData2" value="'+data2+'"></span><span><input type="number" name="editData3" value="'+data3+'"></span><span><input type="submit" name="editData" value="Edit"></span></form></td>')

你可能想要一些这样的 CSS:

tr form span {
    display:table-cell;
}

【讨论】:

  • Wampastompa,现在这个表格就像一个魅力!唯一的问题是我无法使 标记看起来像表格单元格。您提供的 CSS 没有进行任何更改。它以正确的元素为目标,但不会像 td 标签那样进行垂直分割。我该怎么办?
猜你喜欢
  • 1970-01-01
  • 2013-01-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多