В этом нет ничего плохого, когда вы отключаете элемент управления формы.
<input type="text" disabled readonly value="is disable">
или
<input type="text" disabled="disabled" readonly="readonly" value="is disable">
Однако это может не привести к согласованному поведению, так как оно относится к копированию текста (после его выбора).
Несовершенный путь JavaScript:
Некоторое время я не использовал событие типа select
, но предлагаю отключить возможность выделения текста. Вы также можете играть с событиями focus
и blur
.
Внешняя таблица стилей CSS:
.preventSelection {user-select: none} // IE 10+
W3Schools: по выбору пользователя:
Быстрый и грязный обработчик событий:
function preventDisabledControlTextCopy(e)
{
// blah, blah, blah
if (e.target.disabled === true) {
// Add "preventSelection" to e.target.className
// Alternatively, change the focus to somewhere else!
} else {
// Remove "preventSelection" from e.target.className
}
}
// Blah, blah, blah-blah blah
textBox.addEventListener("select", preventDisabledControlTextCopy, false);
Поиск вариантов никогда не является пустой тратой времени. Я пропустил много деталей, но я сделал важную часть явной (поскольку Stackoverflow - это инструмент, который люди используют для изучения вещей). Реализация зависит от вас.
Заключительные мысли:
Лучшим ответом может быть использование CSS и JavaScript и переключение visibility: hidden
(IE 4+) или display: none
(IE 8+), в зависимости от вашего сценария, структуры DOM и сложности, которой вы можете управлять.
Динамические формы - отличный способ познакомиться с HTML, CSS и JavaScript.