为什么我无法获得输入值

Sli*_*lim 0 javascript jquery knockout.js

我的HTML中有这个表:

<table class="dataTable" id="repaymentShedule">
                <thead>
                    <tr>
                        <th>1</th>
                        <th>2</th>
                        <th>3</th>
                        <th>4</th>
                        <th>5</th>
                        <th>6</th>
                        <th>7</th>
                        <th>8</th>
                    </tr>
                </thead>
                <tbody data-bind="foreach: creditDetails">
                    <tr>
                        <td class="paymentDate" data-bind="text: dateOfPayment"></td>
                        <td class="startBalance" data-bind="text: beginingBalance"></td>                        
                        <td class="monthlyInt" data-bind="text: monthlyInterest"></td>
                        <td class="principal"><input data-bind="value: princpalPayment"></input></td>
                        <td class="monthlyInst" data-bind="text: monthlyInstallment"></td>
                        <td class="remainingBalance" data-bind="text: endingBalance"></td>
                        <td class="paid"><input type="checkbox" data-bind="checked: isPaid, disable: isPaid, click: testFunc, value: true"></td> <!-- value: true moje da ne e nujno -->
                        <td class="currentDate" data-bind="text: currentDate"></td>
                    </tr>
                </tbody>
            </table>
Run Code Online (Sandbox Code Playgroud)

这些值来自knockout js绑定.我正在尝试principal使用以下函数获取类的所有值:

updateValues = function(){
    $("tbody").find("tr").each(function() {                               
       var principal = $(this).find('td.principal').val();
       console.log(principal);
    });                           
};
Run Code Online (Sandbox Code Playgroud)

Bu控制台返回: (an empty string)

编辑: 上面的函数paymentDate只在更改.val()to时在类上没有任何问题.text()

我很确定我没有以正确的方式获得价值,或者绑定不允许我获得当前值,但我真的无法发现问题

pal*_*aѕн 6

你需要这样做:

var principal = $(this).find('td.principal :input').val();
Run Code Online (Sandbox Code Playgroud)

使用类获取input表格单元格内元素的值principal.

另外,根据.val()API文档: -

.val()方法主要用于获取表单元素的值,例如input,select和textarea.对于元素,.val()方法返回包含每个选定选项的数组; 如果未选择任何选项,则返回null.

因此,在使用代码时,您将在控制台中获取空字符串.

只有将.val()更改为.text(),上述函数才能在paymentDate类上正常运行

这也解释了为什么在更改后得到了正确的值.val().text()paymentDate表格单元格,因为它没有任何input里面的元素.