Мне очень жаль, но я изо всех сил, чтобы увидеть точку этого. Если я получу это правильно, вы хотите, чтобы поле ввода не редактировалось до тех пор, пока оно не будет нажато или не выбрано пользователем (в основном это то, как работают поля ввода: вы не можете изменить их значение, если вы их не выбрали). После того, как эти поля ввода потеряют фокус, они должны вернуться только к чтению.
Если это так, вы слишком усложняете ситуацию. Однако это не мое дело. Лучший способ сделать это IMO - это делегировать мероприятие.
Поэтому я собрал пару скриптов, на чистом JS, на jQuery. Оба далеки от совершенства, но должны помочь вам на вашем пути.
Regular JS (fiddle here):
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 с .on
, jsfiddle here):
$('#inputDiv input').on(
{
focus: function()
{
$(this).removeAttr('readonly');
},
blur: function()
{
$(this).attr('readonly','readonly');
}
});
Я отвечал как JQuery и чистый JS , потому что я нахожу его информативным и учебным, чтобы узнать, что происходит за экранами в jQuery.
$ (this) .removeAttr ("readonly"); –
Вы хотите, чтобы он был доступен только для чтения, но этот пользователь может редактировать его одновременно? Можете ли вы объяснить, что вы пытаетесь достичь здесь? –
Я хочу удалить, когда я выхожу из ввода или вкладки, а не удаляю его для всех – Abude