如何从任何地方提交按钮?

时间:2019-05-15 20:41:57

标签: javascript html datatables

我正在创建一个新的数据表,并且其中具有这样的功能,如果有人按下它,我可以extend a 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; 
}

因此,现在我只能在按下按钮时才能收听它,但我不知道如何获取这些数据并提交表单。

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

更新:jsfiddle ,您会看到按任意行并提交按钮的问题。因此,您可能会有警报,但没有表单数据。

1 个答案:

答案 0 :(得分:3)

从您的JSFiddle代码和注释看来,您似乎是在试图抑制表单提交,目的是使用AJAX请求来提交数据。但是,您是通过尝试修改form标记的“ action”属性来完成此操作的,从而引入了语法错误。

尽管您也许可以使此技术起作用,但这不是推荐的方法,并且确实存在一些缺点。最好使用标准的jQuery(委托)事件处理程序来处理表单的“ submit”事件:

$('#table_id tbody').on('submit', 'form', function(event) { 
  event.preventDefault(); 
  //...and then your AJAX code goes here
});

event.preventDefault将阻止常规表单提交的发生,因此您可以运行AJAX代码。

这是您的JSFiddle的改编版,显示了它的实际效果:https://jsfiddle.net/moa1nr9j/