【问题标题】:Get value from textbox in dataTable从数据表中的文本框中获取值
【发布时间】:2015-07-09 21:13:27
【问题描述】:

我有一个动态创建的表,我正在使用 DataTables 和 TableTools - 它工作得很好,除了我有一个输入文本框,我需要在单击按钮时获取值,但它只给了我 html,例如 <input size="3" type="text">

我已经创建了一个 DataTables live 来尝试重新创建问题,但奇怪的是那里返回的 html 给出了它不适合我的值(在 html 中,但至少我可以解析它) - 它仍然但是,如果您更改数量,则不会给您正确的值-请参阅此处http://live.datatables.net/bidetoku/1/

这是创建表的方式:

var tr = [];

var sorTable = document.getElementById('tblSORS');

for (var i = 0; i < sorresults.length; i++) {

    tr[i] = document.createElement('tr');
    var tdsorID = document.createElement('td');
    var tdCode = document.createElement('td');
    var tdDesc = document.createElement('td');
    var tdClient = document.createElement('td');
    var tdCreated = document.createElement('td');
    var tdQuantity = document.createElement('td');
    var inputQty = document.createElement('input');

    inputQty.type = "text";
    inputQty.value = "1";
    inputQty.size = "3";



    tdsorID.appendChild(document.createTextNode(sorresults[i].selectSingleNode('./itt_scheduleofratesid').nodeTypedValue));
    tdCode.appendChild(document.createTextNode(sorresults[i].selectSingleNode('./itt_code').nodeTypedValue));
    tdDesc.appendChild(document.createTextNode(sorresults[i].selectSingleNode('./itt_description').nodeTypedValue));
    tdClient.appendChild(document.createTextNode(sorresults[i].selectSingleNode('./itt_clientcontractid.itt_description').nodeTypedValue));
    tdQuantity.appendChild(inputQty);
    tdCreated.appendChild(document.createTextNode(returnDate(sorresults[i].selectSingleNode('./createdon').nodeTypedValue)));


    tr[i].appendChild(tdsorID);
    tr[i].appendChild(tdCode);
    tr[i].appendChild(tdDesc);
    tr[i].appendChild(tdClient);
    tr[i].appendChild(tdQuantity);
    tr[i].appendChild(tdCreated);

    sorTable.getElementsByTagName('tbody')[0].appendChild(tr[i]);
}

var sors = $('#tblSORS').DataTable({
    "destroy": true,
    "info": false,
    "lengthChange": true,
    dom: 'T<"clear">lfrtip',
    tableTools: {
        "sRowSelect": "multi",
        "aButtons": ""
    }

});

// hide scheduleofratesid column

sors.column(0).visible(false);

任何帮助都会很棒,现在已经为此苦苦挣扎了一段时间。

编辑:这里有一些代码似乎完成了我想要的一半但不完全

function getQuantity(){

var table = $('#example').dataTable();
var data = table.$('input').serialize();
var oTT = $.fn.dataTable.TableTools.fnGetInstance('example');

var rows = oTT.fnGetSelectedData();

if (rows.length > 0) {
    var selectedRows = oTT.fnGetSelectedIndexes();

    selectedRows.forEach(function (i) {

        alert(document.getElementById('example')
            .rows[i]
            .cells[0]
            .firstChild
            .value
        );

    });
}
}

【问题讨论】:

标签: javascript jquery datatables jquery-datatables tabletools


【解决方案1】:

这是一个可以帮助你的 jQuery:

        $(".test").each(function () {
            //Example: add a click event for every item that has the class .test
            $(this).click(function (){
                //This will get you the value from the clicked element
                valueOfElement = $(this).val();
            });
        }); 

但是,您可能必须为所有这些输入添加一个通用类。

jQuery 参考https://api.jquery.com/each/

尝试下一个代码:

<!doctype html>
<html lang="es">

<head>
    <title>Stack Overflow</title>
    <script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script>
    <script>
        $(document).ready(function () {
            $("#simpleButton").click(function(){
                $(".fields").each(function () {
                    value = $(this).val();
                    alert(value);
                });  
            });
        });
    </script>
</head>

<body>
    <div id="texts">
        <input type="text" size="25" value="1" class="fields">
        <br/>
        <input type="text" size="25" value="2" class="fields">
        <br/>
        <input type="text" size="25" value="3" class="fields">
        <br/>
        <input type="text" size="25" value="4" class="fields">
        <br/>
        <input type="text" size="25" value="5" class="fields">
        <br/>
        <input type="button" value="Get the values" id="simpleButton">
    </div>
</body></html>

【讨论】:

  • 这很好用,我有类似的东西,但我需要它与 tabletools 的 fnGetSelectedData() 一起工作 - 我已经编辑了代码以显示我尝试过的不起作用
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多