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 09:42

Как запретить вставлять текст в input
 
Есть какие нить соображения по этому поводу???
И лучше бы если они на jQuery :)

Skipp 12.01.2011 09:53

qwermjk,
у input есть такой атрибут disabled.
$("input").attr({ disabled: "disabled" });

qwermjk 12.01.2011 09:58

Блин, меня не так поняли, моя ошибка, что бы нельзя было вставлять (ctrl+v)

Skipp 12.01.2011 10:21

Вроде должно работать
<head>
<script type="text/javascript" src="http://yandex.st/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript">
$('input').live("keydown", 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>

qwermjk 12.01.2011 11:15

k = e.which || e.button;
Что вот это значит?? остальное всё понял

ksa 12.01.2011 11:20

qwermjk, вот почитай...

Skipp 12.01.2011 11:24

qwermjk,
в ie у объекта event нет свойства which, есть button
то есть переменная k получает либо то, либо то значение в зависимости от браузера.

qwermjk 12.01.2011 11:31

А где узнать какая кнопка имеет какое значение??

Skipp 12.01.2011 11:31

qwermjk,
алерт =)

Vulkan 12.01.2011 11:37

У меня например в такой инпут всё вставляет с ctrl+v, opera 11.

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

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

x-yuri 15.01.2011 15:56

Цитата:

Сообщение от qwermjk
Как запретить вставлять текст в input

qwermjk, а зачем это нужно?

Aetae 15.01.2011 16:59

Решатель шароввакуумных задач врывается в тред.)
<input type="text" maxlength="20" onkeydown="event.ctrlKey?maxLength=0:maxLength=20" onkeyup="maxLength=0">


//тест толь ff под linux, но по логике должно работать везде)

Vulkan 15.01.2011 17:06

Aetae, на onkeypress тоже повесь, а то в опере 11 твой вариант бесполезен.

Aetae 15.01.2011 17:24

Как же я ненавижу оперу.)
Всё равно нет под рукой чтоб протестить, так что исправь коль могёшь.

x-yuri 15.01.2011 17:58

кроме того, можно вставлять с нажатым shift через контекстное меню :)

monolithed 16.01.2011 22:04

Цитата:

Сообщение от Vulkan
в опере 11 твой вариант бесполезен.

в safari тоже

qwermjk 21.01.2011 23:58

Вот вам задачку то подкинул =))
Аж справится ни кто не может!

x-yuri 22.01.2011 00:17

понимаешь, qwermjk, твоя задача шаровакуумна чуть более чем на половину, пока не доказано обратное. А так как обратное пока не доказано, я над ней не думал ;)

SleepShadowWeb 17.04.2012 16:17

<script type="text/javascript">
$(document).ready(function() {
$("#Text1").bind('copy', function(e) {
alert('copying text!');
});
$("#Text1").bind('paste', function(e) {
alert('pasting text!');
});
$("#Text1").bind('cut', function(e) {
alert('cut text!');
});
});
</script>

Valewar 05.02.2014 18:28

А может кто-нибудь тут подсказать ответ?
http://javascript.ru/forum/showthread.php?p=296090

sandr888 28.04.2015 13:46

<script type="text/javascript">
$(document).ready(function() {
$("#Text1").bind('copy', function() { return false;});
$("#Text1").bind('paste', function() { return false;});
$("#Text1").bind('cut', function() { return false;});
});
</script>

чуть подправил SleepShadowWeb


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