1

how can i activate the readonly back after finishing the edit of the input ?

this is my code for now :

<script type="text/javascript">
$(document).ready(function () {
         $("input").bind('click focus', function(){
                $('input').each(function(){
                        $(this).attr("readonly", false);
                        });
                });
         });
</script>

an input like this :

<input type="text"  class="m" readonly="readonly" id="anchor_text">

i think something with focusout, i need to put readonly back when i go to the next input, so the edited input can't be change unless i hit again click on it.

4

2 回答 2

1

尝试:

$("input").bind('click focus', function(){
     $(this).attr("readonly", false);
  }).bind('blur', function(){
     $(this).attr("readonly", true);
 });​

演示:http: //jsfiddle.net/DkCvu/1/

于 2012-06-14T11:26:23.273 回答
0

对不起,但我很难理解这一点。如果我做对了,您希望输入字段在用户单击或选择之前不可编辑(这基本上是输入字段的工作方式:除非您选择它们​​,否则您无法更改它们的值)。在这些输入字段失去焦点后,它们应该回到只读状态。
如果是这种情况,那么您将事情复杂化了。不过,这不关我的事。IMO 完成这项工作的最佳方式是委托活动。

因此,我在纯 JS 和 jQuery 上整理了一些小提琴。两者都远非完美,但应该可以帮助您。

常规 JS(在这里提琴):

var dv = document.getElementById('inputDiv');
if (!dv.addEventListener)
{
    dv.attachEvent('onfocusin',switchRO);
    dv.attachEvent('onfocusout',switchRO);
}
else
{
    dv.addEventListener('focus',switchRO,true);
    dv.addEventListener('blur',switchRO,true);
}

function switchRO (e)
{
    var self;
    e = e || window.event;
    self = e.target || e.srcElement;
    if (self.tagName.toLowerCase() === 'input')
    {
        switch (e.type)
        {
            case 'onfocusin':
            case 'focus':
                self.removeAttribute('readonly');
            break;
            default:
                self.setAttribute('readonly','readonly');
        }
    }
    return true;
}

在 jQuery 中,这可能看起来像这样(jQuery with .on, jsfiddle here):

$('#inputDiv input').on(
    {
        focus: function()
        {
            $(this).removeAttr('readonly');
        },
        blur: function()
        {
            $(this).attr('readonly','readonly');
        }
    });

​ 我同时发布了 jQuery 和纯 JS,因为我发现了解 jQuery 屏幕背后发生的事情既有信息又有教育意义。

于 2012-06-14T12:08:27.587 回答