在文本框中添加“readonly”属性后无法在一个事件中删除它

时间:2010-12-21 07:04:02

标签: jquery html internet-explorer

重新制作的步骤
使用 Internet Explorer

  1. 检查无限制复选框
  2. 点击文本框(它将从复选框中删除勾选/勾选)
  3. 尝试在文本框中输入文字
  4. 我们无法进入文本框
    4.再次单击文本框。现在我们将能够在文本框中输入文本

    我们试过了
    1.使属性readOnly为flase,即$('#myinput')。attr('readOnly',false);
    2.调用$('#myinput')。click();

    以下是HTML代码

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>Make input read only</title>
        <script type="text/javascript" src="http://ajax.microsoft.com/ajax/jquery/jquery-1.4.4.min.js"></script>
    </head>
    <body>
        <input id="myinput" type="text" />
        <input id="mycheck" type="checkbox" />
        <script type="text/javascript">
            /*oncheck box click*/
            $('#mycheck').click(function () {
                if ($(this).attr('checked')) {
                    $('#myinput').attr('readOnly', 'readOnly');
                }
                else {
                    $('#myinput').removeAttr('readOnly');
                    /* also tried  
                     * $('#myinput').attr('readOnly', false);
                     * $('#myinput').attr('readOnly', '');
                     */
                }
            });
            /*on text box click*/
            $('#myinput').click(function () {
                $('#mycheck').removeAttr('checked');
                $('#myinput').removeAttr('readOnly');
                /* also tried  
                 * $('#myinput').attr('readOnly', false);
                 * $('#myinput').attr('readOnly', '');
                 */
            });
        </script>
    </body>
    </html>
    

    Live copy

4 个答案:

答案 0 :(得分:2)

您需要将readonly属性设置为“

$('#myinput').attr('readOnly', '');

答案 1 :(得分:1)

我遇到了同样的问题,并在stackoverflow上报告了它,在我找到它的时候一秒......

修改: Found it.

如果您阅读我的帖子,它也会解释发生了什么。实际上,文本框实际上已解锁(与Tyde尝试的不同)。问题与焦点/选择有关。

答案 2 :(得分:0)

function preventBackspace(e) {

    var evt = e || window.event;

    if (evt) {
        if (evt.srcElement.getAttribute('readonly')) {
            var keyCode = evt.charCode || evt.keyCode;
            if (keyCode === 8) {
                if (evt.preventDefault) {
                    evt.preventDefault();
                } else {
                    evt.returnValue = false;
                }
            }
        }
    }
}

我有一个方案,文本框将在readonly和amp;之间切换。可编辑,所以我添加了帮助的条件if (evt.srcElement.getAttribute('readonly'))

答案 3 :(得分:0)

使用此For For IE,它也适用于chrome和mozilla

$('#myinput').removeAttr("readonly");
$('#myinput').select();