使用val(值)设置文本框的值不起作用

时间:2015-07-03 05:01:24

标签: javascript jquery

我有一个表,如果单击一行的复选框,该行将被禁用(表示所有输入都被禁用,文本框的值设置为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.

5 个答案:

答案 0 :(得分:3)

您需要将DOMElement转换为jQuery对象,如此

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

因为DOMElement没有.val方法,或者您可以使用DOMElement中的.value属性,所以

inputs[i].value = '0';

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

答案 1 :(得分:2)

对于该行,请使用eq()代替[]

inputs.eq(i).val('0');

正在发生的事情是访问像inputs[i]这样的项目,提供没有方法val()的原生javascript DOM元素。但是eq()将检索jQuery对象。所以,要么使用上面的,要么采取纯javascript替代

inputs[i].value = '0';

答案 2 :(得分:0)

使用jquery每个函数:

inputs.each(function(){

    $(this).val('0');

});

答案 3 :(得分:0)

您可以使用eqprop

for (var i = 0; i < inputs.length; i++) {
            inputs.eq(i).prop('disabled',true);
            inputs.eq(i).val('0');
        }

答案 4 :(得分:0)

你试图在javaScript DOM对象上调用 let blurEffect = UIBlurEffect(style: UIBlurEffectStyle.Light) let bluredEffectView = UIVisualEffectView(effect: blurEffect) bluredEffectView.frame = CGRectMake(100, 100, 200, 200) self.imageview.addSubview(bluredEffectView) 函数,val()不是JavaScript Native方法,它只能用于jQuery对象,所以你只能用jQuery选择器调用

val()

或者您也可以在$(inputs[i]).val('0'); 变量

中指定值
value