readonly属性在jquery中不起作用

时间:2014-07-16 11:18:03

标签: jquery html

我在此代码中使用此代码我将前两列(即answer1和answer2)输入值乘以第三列(即answer3)输入。

我设置第三列输入读取仅由jQuery但是当我点击第三列输入并按任意键作为enter,shift,0到9等然后第三列(即answer3)输入的值增加但是我不喜欢#39; t这样做。价值不应该增加。

<html>

<body>
    <table class="chetan">
        <thead>
            <tr>
                <th>&nbsp;</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>

5 个答案:

答案 0 :(得分:1)

你没有使用readonly。你需要使用道具。

答案 1 :(得分:1)

它无效,因为您的选择器查询返回一个数组。通过迭代和设置每个

的属性来解决它
 $("table.chetan >tbody >tr >td:nth-child(4)").addClass("ccg").children("input").each(function () {
     $(this).attr('readonly', true);
 });

jsFiddle

答案 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.

click here

答案 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();更改为任何其他简化代码,因为这是不必要的复杂代码。 :)