Javascript 如何从无处提交按钮?

Javascript 如何从无处提交按钮?,javascript,html,datatables,Javascript,Html,Datatables,我正在制作一个新的数据表,其中有这样的功能,如果有人按下它,我可以: // Add event listener for opening and closing details $('#datatable-buttons tbody').on('click', 'tr', function(){ var tr = $(this); var row = a.row( this ); if(row.child.isShown()){ // This row

我正在制作一个新的数据表,其中有这样的功能,如果有人按下它,我可以:

// Add event listener for opening and closing details
$('#datatable-buttons tbody').on('click', 'tr', function(){
    var tr = $(this);
    var row = a.row( this );


    if(row.child.isShown()){
        // This row is already open - close it
        row.child.hide();
        tr.removeClass('shown');
    } else {
        row.child(format(row.data())).show();
        tr.addClass('shown');
           }
});
所以,如果有人按下了延长线上的按钮,我就能听到:

$('#datatable-buttons tbody').on('click', 'td button', function(){
    var tr = $(this);
    var row = a.row( this );
然而,我已经尝试了100种方式来提交这一行的表单,但没有任何方法可以正常工作

这是一个扩展行的简单函数:

function format ( d ) {
    var editform = '<form> ... <button type="submit" class="btn 
    btn-primary mb-2" >Submit</button></div> </div></form>';

    return editform; 
}
函数格式(d){
var editform=“…提交”;
返回编辑表单;
}
所以,现在我只能在按下按钮时听,但我不知道如何获取这些数据并提交表单


再一次:1。Datatable有行,没有任何按钮。2.如果按任意一行-它将扩展并显示其详细信息(该行下方将显示新区域)。3.这是这个区域的一个表格。4.我无法提交它


更新:您可以按任意行并提交按钮查看问题。因此,您可能有一个警报,但没有表单数据。

从您的JSFIDLE代码和注释来看,您似乎试图抑制表单提交,以便使用AJAX请求来提交数据。但是,您是通过尝试修改表单标记的“action”属性来完成的,这样做会引入语法错误

虽然您可能能够使这项技术发挥作用,但这不是推荐的方法,并且确实存在一些缺点。最好使用标准jQuery(委托)事件处理程序处理表单的“提交”事件:

$('#table_id tbody').on('submit', 'form', function(event) { 
  event.preventDefault(); 
  //...and then your AJAX code goes here
});
event.preventDefault
将阻止常规表单提交,这样您就可以运行AJAX代码了


下面是一个经过修改的JSFIDLE版本,显示了它的作用:

您可以使用DOM函数
document.getElementById(“myForm”).submit()提交表单。您需要更改editform以在form元素中包含id:
var editform='。。。提交";不太清楚…您想通过代码提交表单,而不需要用户按下按钮,对吗?您希望这种情况何时发生?你试过什么?不幸的是,这样不行(该表单的页面上没有html代码。“该行下方将出现新区域”…表单在标记中的确切位置插入?请在插入后向我们展示完成的html示例(您可以使用浏览器的元素检查器查看)。如suketup所述,如果
标记位于
内,但不在
内,则它将无法正常工作。表只能包含行,行只能包含单元格。所有其他元素都无效。老实说,修改操作实际上不是推荐的方法。最好添加另一个单击处理程序以处理表单的“提交”事件。就像处理表行上的单击一样。例如,`$('#table_id tbody')。在('submit','form',function(event){event.preventDefault();/…上,然后您的AJAX代码转到此处`。您可以删除表单的“action”属性,如果您打算使用AJAX,那么您并不真正需要它。还要删除表单的id,因为重复id在HTML中无效,您可能会多次添加表单。演示:太好了!这正是我想要的。感谢您的支持!祝您在所有项目和任务中好运。