jQuery DataTables知道是否已选择表行,如果未选择,则按按钮发出警报

jQuery DataTables知道是否已选择表行,如果未选择,则按按钮发出警报,jquery,Jquery,如果选择了一行,如何检查jQuery数据表?我试图创建一个完整的按钮,只有在选择了DataTable中的一行时,按下该按钮才能提交到数据库。如果该行未被选中且按下按钮,我希望它提醒用户,并告诉他们必须选择要完成的行 我所尝试的: $(document).ready(function () { $("#CompleteIt").click(function () { var table = $('#processing').DataTable(); $('

如果选择了一行,如何检查jQuery数据表?我试图创建一个完整的按钮,只有在选择了DataTable中的一行时,按下该按钮才能提交到数据库。如果该行未被选中且按下按钮,我希望它提醒用户,并告诉他们必须选择要完成的行

我所尝试的:

$(document).ready(function () {

    $("#CompleteIt").click(function () {
        var table = $('#processing').DataTable();
        $('#processing tbody').on( 'click', 'tr', function () {
            var rowdata = table.row( this ).data();
            console.log(rowdata);
      if (!rowdata) {
          console.log(rowdata.id);
          alert("Please choose a batch to be completed.");
          return false;
      } else {
      }
    });

您必须将所选行存储在全局变量上,并在“提交”按钮上检查它

        var selectedRow = null;
var table = $('#processing').DataTable();
$('#processing tbody').on( 'click', 'tr', function (e) {
    e.stoppropagation();
    selectedRow = table.row( this ).data();
    return false;
})

$(body).click(function(){
    selectedRow = null;
});

$("#CompleteIt").click(function () {
    if(selectedRow){
        //process the request
        return true;
    }
    alert("No row is slected");
})

您必须将所选行存储在全局变量上,并在“提交”按钮上检查它

        var selectedRow = null;
var table = $('#processing').DataTable();
$('#processing tbody').on( 'click', 'tr', function (e) {
    e.stoppropagation();
    selectedRow = table.row( this ).data();
    return false;
})

$(body).click(function(){
    selectedRow = null;
});

$("#CompleteIt").click(function () {
    if(selectedRow){
        //process the request
        return true;
    }
    alert("No row is slected");
})

您必须将所选行存储在全局变量上,并在“提交”按钮上检查它

        var selectedRow = null;
var table = $('#processing').DataTable();
$('#processing tbody').on( 'click', 'tr', function (e) {
    e.stoppropagation();
    selectedRow = table.row( this ).data();
    return false;
})

$(body).click(function(){
    selectedRow = null;
});

$("#CompleteIt").click(function () {
    if(selectedRow){
        //process the request
        return true;
    }
    alert("No row is slected");
})

您必须将所选行存储在全局变量上,并在“提交”按钮上检查它

        var selectedRow = null;
var table = $('#processing').DataTable();
$('#processing tbody').on( 'click', 'tr', function (e) {
    e.stoppropagation();
    selectedRow = table.row( this ).data();
    return false;
})

$(body).click(function(){
    selectedRow = null;
});

$("#CompleteIt").click(function () {
    if(selectedRow){
        //process the request
        return true;
    }
    alert("No row is slected");
})

还可以使用隐藏字段存储选定行。如果需要将单击的行发送到服务器,这可能很有用

在HTML中添加:

<input id="selectedRow" type="hidden"/>
然后,在按钮的处理程序上,检查此隐藏输入是否有值:

$('#CompleteIt').click(function(){
    var rowIndex = $('#selectedRow').val();

    if (rowIndex){
        console.log("Row selected: " + rowIndex);
    } else {
        console.log("No row selected!");
        return false;
    }
});
根据文档改编的示例:

编辑:如何使用行中第一项的数据而不是索引?
使用
行(this).data()
(文档)代替
行(this).index()
。根据填充字段的方式,获取的数据可能是对象或数组。如果使用DOM源数据,
data()
将返回一个数组,因此要访问第一个项目,您需要
行(this).data()[0]
。如果您使用了一个对象(比如来自ajax源的json),那么您将得到一个对象,因此您需要访问所需的属性,比如
行(this).data().id
。查看。

您还可以使用隐藏字段存储所选行。如果需要将单击的行发送到服务器,这可能很有用

在HTML中添加:

<input id="selectedRow" type="hidden"/>
然后,在按钮的处理程序上,检查此隐藏输入是否有值:

$('#CompleteIt').click(function(){
    var rowIndex = $('#selectedRow').val();

    if (rowIndex){
        console.log("Row selected: " + rowIndex);
    } else {
        console.log("No row selected!");
        return false;
    }
});
根据文档改编的示例:

编辑:如何使用行中第一项的数据而不是索引?
使用
行(this).data()
(文档)代替
行(this).index()
。根据填充字段的方式,获取的数据可能是对象或数组。如果使用DOM源数据,
data()
将返回一个数组,因此要访问第一个项目,您需要
行(this).data()[0]
。如果您使用了一个对象(比如来自ajax源的json),那么您将得到一个对象,因此您需要访问所需的属性,比如
行(this).data().id
。查看。

您还可以使用隐藏字段存储所选行。如果需要将单击的行发送到服务器,这可能很有用

在HTML中添加:

<input id="selectedRow" type="hidden"/>
然后,在按钮的处理程序上,检查此隐藏输入是否有值:

$('#CompleteIt').click(function(){
    var rowIndex = $('#selectedRow').val();

    if (rowIndex){
        console.log("Row selected: " + rowIndex);
    } else {
        console.log("No row selected!");
        return false;
    }
});
根据文档改编的示例:

编辑:如何使用行中第一项的数据而不是索引?
使用
行(this).data()
(文档)代替
行(this).index()
。根据填充字段的方式,获取的数据可能是对象或数组。如果使用DOM源数据,
data()
将返回一个数组,因此要访问第一个项目,您需要
行(this).data()[0]
。如果您使用了一个对象(比如来自ajax源的json),那么您将得到一个对象,因此您需要访问所需的属性,比如
行(this).data().id
。查看。

您还可以使用隐藏字段存储所选行。如果需要将单击的行发送到服务器,这可能很有用

在HTML中添加:

<input id="selectedRow" type="hidden"/>
然后,在按钮的处理程序上,检查此隐藏输入是否有值:

$('#CompleteIt').click(function(){
    var rowIndex = $('#selectedRow').val();

    if (rowIndex){
        console.log("Row selected: " + rowIndex);
    } else {
        console.log("No row selected!");
        return false;
    }
});
根据文档改编的示例:

编辑:如何使用行中第一项的数据而不是索引?
使用
行(this).data()
(文档)代替
行(this).index()
。根据填充字段的方式,获取的数据可能是对象或数组。如果使用DOM源数据,
data()
将返回一个数组,因此要访问第一个项目,您需要
行(this).data()[0]
。如果您使用了一个对象(比如来自ajax源的json),那么您将得到一个对象,因此您需要访问所需的属性,比如
行(this).data().id
。查看。

@DavidBrierton我编辑了我的答案,现在表是一个对象。@DavidBrierton我编辑了代码,现在当您单击该行时,它可以防止触发所有单击事件,但是如果您单击表行以外的任何位置,变量将被清除。您还可以向所选行添加一些类以指示它已被选中(并在再次单击该行时将其删除)。文档中有一个可能有用的参数。@DavidBrierton我编辑了我的答案,现在表是一个对象。@DavidBrierton我编辑了代码,现在当您单击该行时,它可以防止触发所有单击事件,但如果您单击表行以外的任何位置,该变量将被清除。您还可以向所选行添加一些类来指示它已选中(并在再次单击该行时将其删除)。文档中有一个可能有用的参数。@DavidBrierton我编辑了我的答案,现在表是一个对象。@DavidBrierton我编辑了代码,现在当您单击该行时,它可以防止触发所有单击事件,但如果您单击表行以外的任何位置,该变量将被清除。您还可以向所选行添加一些类来指示它已选中(并在再次单击该行时将其删除)。文档中有一个可能有用的参数。@DavidBrierton我编辑了我的答案,现在表是一个对象。@DavidBrierton我编辑了代码,现在当您单击该行时,它可以防止触发所有单击事件,但如果您单击表行以外的任何位置,该变量将被清除。您还可以向所选行添加一些类来指示它已选中(并在再次单击该行时将其删除)。文档中有一个。