我正在创建一个新的数据表,并且其中具有这样的功能,如果有人按下它,我可以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 ,您会看到按任意行并提交按钮的问题。因此,您可能会有警报,但没有表单数据。
答案 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/