Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как запретить вставлять текст в input (https://javascript.ru/forum/misc/14350-kak-zapretit-vstavlyat-tekst-v-input.html)

qwermjk 12.01.2011 11:43

Кстати, да, в опере 11 вставляет!

Skipp 12.01.2011 11:46

Vulkan,
да там ещё много недочётов, я просто привёл пример=)
qwermjk,
И с помощью правой кнопки мыши тоже вставляет.

рони 12.01.2011 12:29

Skipp,
Достаточно для оперы добавить keypress
<head>
<script type="text/javascript" src="http://yandex.st/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript">
$('input').live("keydown keypress", function(e){
	var e = e || event, k = e.which || e.button;
	if(e.ctrlKey && k == 86) return false;
});
</script>
</head>
<body>
	<input type="text" >
</body>

with-love-from-siberia 12.01.2011 13:13

Какие сложные танцы с бубном jQuery вокруг простой задачи

<input type="text" id="textField" value="какой-то текст" /><br />
<input type="button" value="Переключить (выкл/вкл) возможность редактирования поля" onclick="doDisable()" />
<script>

function doDisable()
{
    var textField = document.getElementById('textField');
    textField.readOnly = ! textField.readOnly;
};

</script>

Matre 12.01.2011 13:15

with-love-from-siberia
тсу надо только ctrl-v запретить

da_ff 12.01.2011 13:41

Для оперы это точно не получится сделать, у них как бы политика...

Vulkan 12.01.2011 13:44

da_ff, вы про какой пример? Два последних примера работают в Opera 11.

da_ff 12.01.2011 13:53

Vulkan,
я не про примеры, я про шаманские способы запрета вставки строк. Конечно же, самым корректным вариантом будет, запрет редактирования инпута, но если надо реализовать что-то вроде инпута, в котороый можно толко вручную ввести значение, не используя буфер обмена, то этого сделать нельзя, поскольку в опере по прежнему можно будет вставить через контекствое меню, если пользователь не разрешит вам заменить стандартное. Это я уже домыслил задачу в направлении "зачем это могло бы понадобиться если простой запрет редактирования не устраивает".

Skipp 12.01.2011 14:50

Вроде должно работать
<head>
<script type="text/javascript" src="http://yandex.st/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript">
$('input').live("keydown keypress", function(e){
	var e = e || event, k = e.which || e.button;
	if(e.ctrlKey && k == 86) return false
	if(k == 2)return false	
}).bind("paste contextmenu", function(){return false});
</script>
</head>
<body>
	<input type="text" >
</body>


В примере будет работать вставка через контекстное меню, а если поставить к себе на страницу, то не будет.

qwermjk 14.01.2011 22:39

Проверял на локальном хосте, и не доконца робит, через меню вставляет и в опере и в мозилле.


Часовой пояс GMT +3, время: 19:24.