Как написать функцию JavaScript, которая позволяет для нередактируемого текстового поля? - PullRequest
0 голосов
/ 09 августа 2011

Мне нужно иметь текстовое поле ввода, в котором я могу щелкнуть, и курсор начнет мигать, но пользователь не может изменить текст внутри него.

Я пытался использовать атрибуты "только для чтения" или "отключено", но онине позволяйте курсору находиться внутри текстового поля.Итак, я думал о решении для реализации в JavaScript на обычном текстовом поле.Есть ли плагин, который уже делает это?Как мне это реализовать?

РЕДАКТИРОВАТЬ: Спасибо за все ответы, но я хотел сделать текст типа textarea / input как не редактируемый, но выбираемый одновременно.Нажатие Ctrl + A внутри текстового поля не работает.Можно ли получить измененное значение и старое значение и сравнить их, а затем вернуть false, если значения отличаются, но во всех других случаях вернуть true, чтобы Ctrl + A , Shift + end и т. Д. Комбинации работают?

Ответы [ 3 ]

3 голосов
/ 09 августа 2011

Примерно так:

<textarea onkeydown="javascript:return false;"></textarea>

сделает трюк. ( jsfiddle )

Вы также можете сделать это во время выполнения, если хотите:

<textarea class="readonly"></textarea>

с

$(".readonly").keydown(function() false);

Обратный вызов onkeydown фиксирует события нажатия клавиш и отменяет их, используя return false;.

В зависимости от того, что вы пытаетесь сделать, вы можете захотеть предотвратить другие виды событий, поскольку, например, все еще можно изменить содержимое с помощью мыши.

Ваша функция обратного вызова может принимать или отменять события в зависимости от типа нажатия клавиши. Например, чтобы включить только ctrl-a и ctrl-c (с jQuery):

function keydown(e) {
  if(!e.ctrlKey) return false; // Cancel non ctrl-modified keystrokes
  if(e.keyCode == 65) return true;// 65 = 'a'
  if(e.keyCode == 67) return true;// 67 = 'c'
  return false;
}
1 голос
/ 09 августа 2011
$(function(){
  $("inputSelector").keydown(function(){ return false; });
});
0 голосов
/ 09 августа 2011

Вы не можете полагаться на отключение <textarea> в качестве пользовательского ввода, поскольку тривиально удалить любой вид отключения HTML или javascript с помощью firebug или других инструментов. Помните, что формы не ограничиваются полями, которые вы им предоставляете, любой может отправить любые данные на страницу.

Отключенные входные данные в любом случае не отправляются с формой, учитывая, что мой совет будет не использовать текстовую область и просто распечатать ее.

...