javascript - 如何从无处提交按钮?

标签 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 您可以看到按任意行并提交按钮时出现的问题。因此,您可能会收到警报,但不会收到表单数据。

最佳答案

从您的 JSFiddle 代码和评论来看,您似乎试图抑制表单提交,以便使用 AJAX 请求来提交数据。但是,您通过尝试修改表单标记的“action”属性来完成此操作,并在这样做时引入了语法错误。

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

$('#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/

关于javascript - 如何从无处提交按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56157321/

相关文章:

javascript - 如何执行 JavaScript 函数以使用不同的样式表?

javascript - 质数在 7 每 +30 之后是否总是具有相同的模式

javascript - 如何根据if条件替换ion-item中的文本

jquery - 改变 jquery 数据表 aoColumns

javascript - 为什么手动搜索后DataTable不会重绘

javascript - 使用带有 jQ​​uery 和 ajax 的 Datatables 来收集数据会产生一个奇怪的 URL

javascript - 使用jquery对 Angular 线动态编号表列

javascript - 如何删除除一类之外的所有类

javascript - 滚动事件不起作用

javascript - 为一个表单提交操作设置目标_blank