Как отменить нажатие клавиши в js?

Я только начал изучать JavaScript. У меня вопрос. Когда имеется более 160 символов, я не хочу вводить символы. Как я могу решить эту проблему?

<body> <textarea onkeypress = "olay()" id = "twitter" cols = "30" rows = "10"></textarea> <br>
    <div id = "sonuc"></div>

</body>


<script type = "text/javascript">
    i = 0;

    function olay() {
        i += 1;
        if (i > 160) {
            document.getElementById("sonuc").innerHTML = "Warning. Over 160 character";
            document.getElementById("twitter").addEventListener("onkeypress", function(event)) {
                event.preventDefault();
            }

        } else {
            document.getElementById("sonuc").innerHTML = "Numver of charecter : " + i;

        }
    }
</script>

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

Ryan 11.03.2018 19:49

спасибо, но я хочу ограничить это с помощью JavaScript.

Kasim ŞEN 11.03.2018 19:53

Я добавил, как это сделать с помощью JavaScript.

Ryan 11.03.2018 20:04

Я обновил свои решения, вам стоит их проверить.

Ryan 11.03.2018 20:40
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
3
4
142
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Ответ принят как подходящий

Вам не нужен JavaScript; текстовые входы имеют Атрибут maxlength.

<textarea
    onkeypress = "olay()"
    id = "twitter"
    cols = "30"
    rows = "10"
    maxlength = "160"></textarea>

@ KasimŞEN * Почему?maxlength встроен в HTML и работает с каждый браузер

user47589 11.03.2018 19:53

Хм, хорошо, я просто пытаюсь выяснить пределы JavaScript. Спасибо.

Kasim ŞEN 11.03.2018 19:56

@ KasimŞEN: Вы можете сделать это с помощью JavaScript, но это довольно сложно (нужно сохранить местоположение выделения, вырезать текст и вернуть выделение - есть больше способов поместить текст в текстовое поле, чем с помощью клавиатуры, как вставка правой кнопкой мыши), и в этом нет смысла.

Ry- 11.03.2018 19:57

@ KasimŞEN Или он может просто сохранить предыдущий ввод и вернуть его, если последнее изменение вызвало value.length> 160.

HaLeiVi 19.06.2018 01:35

@HaLeiVi: Еще нужно восстановить выбор.

Ry- 19.06.2018 01:36

Почему? При изменении замените значение.

HaLeiVi 19.06.2018 01:38

@HaLeiVi: Если курсор, вставляющий текст, находится где угодно, кроме конца…

Ry- 19.06.2018 01:39

Это с html

<textarea 
id = "twitter"
cols = "30" 
rows = "10" 
maxlength = "160" 
placeholder = "Enter text here...">
</textarea>

Лучшее, что вы можете сделать, это написать регулярное выражение и проверять его каждый раз при нажатии клавиши.

Вот как вы бы сделали это с помощью JavaScript и HTML.

<body>
    <textarea id = "twitter" cols = "30" rows = "10" maxlength = "160" placeholder = "Enter text here..."></textarea><br>
    <div id = "sonuc"></div>


    <script type = "text/javascript">
    function olay() {
        var text = document.getElementById("twitter").innerHTML;
        var i = text.length;
        if (i >= 160) {
            document.getElementById("sonuc").innerHTML = "Warning. Reached 160 character limit.";
        }
        else {
            document.getElementById("sonuc").innerHTML = "Number of charecter : " + i;
        }
    }
    document.addEventListener("keypress", function(){
        olay();
    });
    document.addEventListener("keydown", function(){
        olay();
    });
    </script>
</body>

Другие вопросы по теме