Вопрос про запрет на 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> однако с ним вышеуказанная функция не работает. Подскажите, пожалуйста, что с ней не так? Почему более поздняя версия не хочет работать с этим примером? Если есть какие-то более удачные решения этого вопроса - подскажите, пожалуйста. |
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> |
Спасибо! С первым вопросом разобрался. А вот со 2-м пока нет: в документации Bootstrap 4 написано:
Цитата:
Цитата:
Как это исправить? |
javascript_pupil,
Bootstrap блокирует использование $ , использовать в коде jQuery вместо $ или назначить любое другое название через noConflict() https://ruseller.com/jquery?id=61 |
Часовой пояс GMT +3, время: 12:59. |