1

入力の編集が終了した後、読み取り専用をアクティブに戻すにはどうすればよいですか?

これは今のところ私のコードです:

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

このような入力:

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

フォーカスアウトのあるものだと思います。次の入力に移動するときに読み取り専用に戻す必要があるため、もう一度クリックしない限り、編集した入力を変更することはできません。

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 .onjsfiddle here):

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

jQueryと純粋なJSの両方を投稿しました。これは、jQueryの画面の背後で何が起こっているかを知ることが有益で教育的であることがわかったためです。

于 2012-06-14T12:08:27.587 に答える