使用val(value)设置文本框的值无效
Set value of text box using val(value) doesnt work
我有一个表,如果点击一行的复选框,该行将被禁用(意味着所有输入都被禁用,文本框的值设置为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
方法,或者您可以使用DOMElement
中的.value
属性,就像一样
inputs[i].value = '0';
.disabled
之所以有效,是因为这是DOMElement
属性
对于该行,使用eq((而不是[]
inputs.eq(i).val('0');
所发生的事情是访问像inputs[i]
这样的项会给本机JavaScriptDOM元素提供val()
方法。但是eq()
将检索jQuery对象。因此,要么使用上面的,要么采用纯javascript替代
inputs[i].value = '0';
使用jquery每个函数:
inputs.each(function(){
$(this).val('0');
});
您可以使用eq和prop:
for (var i = 0; i < inputs.length; i++) {
inputs.eq(i).prop('disabled',true);
inputs.eq(i).val('0');
}
您正试图在javaScript DOM对象上调用val()
函数,val()
不是javaScript Native方法,它只能与jQuery对象一起使用,因此只能使用jQuery选择器进行调用
$(inputs[i]).val('0');
也可以在value
变量中赋值
inputs[i].value = '0';
相关文章:
- 如果我在javascript中输入无效的电子邮件或空白,如何显示特定的文本框边框红色
- 提交表单后,Watir文本框输入未持续(重置为以前的文本框输入)
- 使用jQuery重置文本,同时存在AJAX调用
- 数组在手动写入时有效,但从文本文件加载时无效
- 我可以重置文本输入而不清除它吗
- Ng模型在AngularJS中重置文本区域后未更新
- 在 JavaScript 中重置文本区域高度
- 阻止按钮重置文本框值
- 阻止重置文本区域
- 输入后重置文本区域
- Extjs组合框在存储区未加载任何结果时保持重置文本值
- 使用javascript重置文本框密码
- 当提交按钮时,Javascript没有重置文本框中的内容
- 数据切换标题重置不重置文本
- 在asp.net中使用javascript通过客户端重置文本框
- 设置和重置文本点击按钮jquery
- 覆盖moment js默认的无效日期文本
- 如何重置文本框并使文本框中的值等于“0”"(或空白)?(javascript)
- 在Safari中重置文本框值
- Firefox 不会在您重新加载页面时自动重置文本区域值