我在此代码中使用此代码我将前两列(即answer1和answer2)输入值乘以第三列(即answer3)输入。
我设置第三列输入读取仅由jQuery但是当我点击第三列输入并按任意键作为enter,shift,0到9等然后第三列(即answer3)输入的值增加但是我不喜欢#39; t这样做。价值不应该增加。
<html>
<body>
<table class="chetan">
<thead>
<tr>
<th> </th>
<th>answer1</th>
<th>answer2</th>
<th>answer3</th>
</tr>
<thead>
<tbody>
<tr>
<th>first</th>
<td>
<input type="text" />
</td>
<td>
<input type="text" />
</td>
<td>
<input type="text" />
</td>
</tr>
<tr>
<th>second</th>
<td>
<input type="text" />
</td>
<td>
<input type="text" />
</td>
<td>
<input type="text" />
</td>
</tr>
<tr>
<th>third</th>
<td>
<input type="text" />
</td>
<td>
<input type="text" />
</td>
<td>
<input type="text" />
</td>
</tr>
</tbody>
</table>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script>
$(function () {
$("table.chetan >tbody >tr >td:nth-child(4)").addClass("ccg").children("input").attr('readonly', true);
$("table.chetan >tbody >tr >td:nth-child(4) >input").keydown(function () {
return false;
});
var mult = 0;
$("input:text").val(0);
$("input:text").keyup(function () {
var p1 = $(this).val();
var p2 = $(this).parent().parent().find("td:not(.ccg) input").not(this).val();
mult = parseFloat(p1) * parseFloat(p2);
$(this).parent().parent().find("td.ccg input").val(mult);
});
});
</script>
</body>
</html>
答案 0 :(得分:1)
你没有使用readonly。你需要使用道具。
答案 1 :(得分:1)
它无效,因为您的选择器查询返回一个数组。通过迭代和设置每个
的属性来解决它 $("table.chetan >tbody >tr >td:nth-child(4)").addClass("ccg").children("input").each(function () {
$(this).attr('readonly', true);
});
答案 2 :(得分:0)
使用disabled
代替readonly
也可以使用
答案 3 :(得分:0)
Try this..This is working.
$("table.chetan >tbody >tr >td:nth-child(4)").addClass("ccg").children("input").each(function () {
$(this).attr('disabled','disable');
});
attr('readonly', true) will not work.
Above given code working.check it.
答案 4 :(得分:0)
您已使用$("input:text").keyup(function () {
,因此,每个输入=“text”上的键盘计算结果。请注意,事件也可以照常用于只读属性。
你使用var p1 = $(this).val();
表示乘法的第一个参数总是你的焦点输入=“文本”。正确?
第二个参数var p2 = $(this).parent().parent().find("td:not(.ccg) input").not(this).val();
表示第一个输入=“仅文本”。
所以如果你按下(基本键盘)第三个输入上的任何一个键=“text”(带有readonly属性的结果文本),那个按下键的情况下的值不能作为字段只读,但计算可以处理(现有的)第三个输入的值=“文本”)和(第一个输入=“文本”)。
<强>解决方案:强>
请使用$("input:text").keyup(function () {
更改$("input:text:not([readonly])").keyup(function () {
,以便在您只读取readonly input =“text”时计算不起作用,代码将按预期工作。
<强>建议:强>
请将var p2 = $(this).parent().parent().find("td:not(.ccg) input").not(this).val();
更改为任何其他简化代码,因为这是不必要的复杂代码。 :)