Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 30.05.2022, 09:07
Профессор
Отправить личное сообщение для javascript_pupil Посмотреть профиль Найти все сообщения от javascript_pupil
 
Регистрация: 05.07.2009
Сообщений: 222

Вопрос про запрет на Ctrl+V в формах и разные версии jquery, а также поля HTML5
Стоит задача запретить пользователю на странице использовать Ctrl+V при заполнении формы обратной связи на сайте. Решается следующим примером кода:

<!DOCTYPE html>
<html lang="en">
<head>
<title>Disabled Cut, Copy and Paste on all textboxes</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
    $('input:text,email,url,textarea').bind('cut copy paste', function(e) {
        e.preventDefault();
        alert("Cut / Copy / Paste Disabled");
    });
});
</script>
</head>
<body>
<p>Type something and try to copy it</p>
<input type="text"  class="myTextBox1" />
<input type="email"  class="myTextBox2" />
<input type="url"  class="myTextBox3" />
<textarea name="message"  class="myTextBox4"></textarea>
</body>
</html>


Но есть несколько проблем, которые хотелось бы устранить:
1. Запрет на Ctrl+V не работает в новых полях (HTML5) типа ввода данных email и url, при этом работает в text и textarea. Можно ли как-то заставить это работать в полях email и url?
2. В приведенном примере javascript находится внутри HTML тега head и использует jquery 3.3.1. При этом в конце страницы перед HTML тегом body в случае с моим фреймворком (Bootstrap 4) уже используется следующий код:

<script src="https://code.jquery.com/jquery-3.5.1.min.js" integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=" crossorigin="anonymous"></script>


однако с ним вышеуказанная функция не работает. Подскажите, пожалуйста, что с ней не так? Почему более поздняя версия не хочет работать с этим примером?

Если есть какие-то более удачные решения этого вопроса - подскажите, пожалуйста.
Ответить с цитированием
  #2 (permalink)  
Старый 30.05.2022, 10:04
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,072

javascript_pupil,
в нормальном случае jquery грузят один раз, селекторы должны быть либо как в css, либо как в jquery, bind устарело.
<!DOCTYPE html>
<html lang="en">
<head>
<title>Disabled Cut, Copy and Paste on all textboxes</title>
<script src="https://code.jquery.com/jquery-3.5.1.min.js" integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=" crossorigin="anonymous"></script>
<script type="text/javascript">
$(document).ready(function(){
    $('input[type=text],input[type=email],input[type=url],textarea').on('cut copy paste', function(e) {
        e.preventDefault();
        alert("Cut / Copy / Paste Disabled");
    });
});
</script>
</head>
<body>
<p>Type something and try to copy it</p>
<input type="text"  class="myTextBox1" />
<input type="email"  class="myTextBox2" />
<input type="url"  class="myTextBox3" />
<textarea name="message"  class="myTextBox4"></textarea>
</body>
</html>
Ответить с цитированием
  #3 (permalink)  
Старый 30.05.2022, 10:27
Профессор
Отправить личное сообщение для javascript_pupil Посмотреть профиль Найти все сообщения от javascript_pupil
 
Регистрация: 05.07.2009
Сообщений: 222

Спасибо! С первым вопросом разобрался. А вот со 2-м пока нет: в документации Bootstrap 4 написано:

Цитата:
Place one of the following < script >s near the end of your pages, right before the closing < /body > tag, to enable them.
Что у меня и сделано. Но в этом случае функция перестает работать. Когда внутри head - все работает. Когда в конце страницы - нет. Конечно я могу и 2 раза эту строку внести, но как-то ненаучно получается.

Сообщение от рони
jquery грузят один раз
Да, но не работает так у меня. И менять фреймворк тоже не вариант, иначе в Bootstrap'е может что-то "посыпаться".

Как это исправить?
Ответить с цитированием
  #4 (permalink)  
Старый 30.05.2022, 10:44
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,072

javascript_pupil,
Bootstrap блокирует использование $ , использовать в коде jQuery вместо $ или назначить любое другое название через noConflict()
https://ruseller.com/jquery?id=61
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Всплытие событий или что то не так... Кирюха =) jQuery 6 30.03.2013 12:56