我有一张表,如果单击某行的复选框,则该行将被禁用(意味着所有输入均被禁用,文本框的值设置为0)

的HTML

@for (int i = 0; i < 3; i++) {
    tableID = "tableID" + i;
    buttonAddID = "buttonAddID" + i;
    <table id="@tableID"  class="tableSum">
        <tbody>
           <tr>
               <td>Apple</td>
               <td>5</td>
               <td>100</td>
               <td><input type="checkbox" onclick="highLightRow(this)" /></td>
           </tr>
            <tr>
               <td><input type="text" value="Organe" /></td>
               <td>5</td>
               <td>200</td>
               <td><input type="checkbox" onclick="highLightRow(this)" /></td>
           </tr>
        </tbody>
        <tfoot>
            <tr>
               <td>Total</td>
               <td></td>
               <td></td>
               <td></td>
           </tr>
             <tr><td colspan="4"><input type="button" class="addRow" onclick="addRow(this)" value="ADD ROW" id="@buttonAddID"/></td></tr>
        </tfoot>
    </table>
}

在JS中:
function highLightRow(cb) {
    var tr = $(cb).closest('tr');
    var inputs = tr.find('input[type=text]');
    if (cb.checked) {
        tr.removeClass('trNormal')
        tr.addClass('trHighLight');
        for (var i = 0; i < inputs.length; i++) {
            inputs[i].disabled = true;
            inputs[i].val('0');
        }
    }
    else {
        tr.removeClass('trHighLight')
        tr.addClass('trNormal');
        for (var i = 0; i < inputs.length; i++) {
            inputs[i].disabled = false;
        }
    }
}
inputs[i].disabled = true;方法有效,禁用了文本框,但该值未设置为0。

最佳答案

您需要像这样将DOMElement转换为jQuery对象

$(inputs[i]).val('0');

因为DOMElement没有.val方法,或者您可以使用.value中的 DOMElement 属性,像这样
inputs[i].value = '0';

.disabled 有效,因为这是DOMElement属性

关于javascript - 使用val(value)设置文本框的值不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31198831/

10-12 00:03