Существует ли противоположная функция preventDefault () в JavaScript?

Я считаю слова в текстовом поле и после определенного количества слов, я использую, предотвращают значение по умолчанию. В еще, я хотел бы повторно включить команды по умолчанию.

Делает preventDefault() имеет противоположная функция?

Вот некоторый пример кода:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>preventDefault</title>
    <style type="text/css"></style>
        <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
        <script type="text/javascript">
            $(function() {
                var wordNum = 3;
                var input_length;
                $("#max").text("max word(s): " + wordNum);
                $("#test").keypress(function(event) {

                    input_length = $.trim($(this).val())
                            .replace(/\s+/g, " ")
                            .split(' ').length;

                    if (input_length > (wordNum - 1)) {
                        event.preventDefault();
                    } else {
                        return true;
                    }
                });
            });

        </script>
        </head>
        <body>
            <div id="max"></div>
            <textarea id="test" cols="20" rows="5"></textarea>
</body>
</html>

Это, кажется, работает над IE, но Firefox не нравится он.

20
задан Brian Tompsett - 汤莱恩 18 September 2019 в 15:08
поделиться

4 ответа

Я думаю, что проблема в том, что вы не ищете ключ удаления. Preventdefault не отменяет обработчик событий полностью. Но с вашим кодом, как только вы достигнете максимальной длины вашего поля, пользователь больше не сможет удалять какие-либо символы, потому что нажатие клавиши удаления отменяется.

Причина, по которой это работает в IE, заключается в том, что IE не запускает событие нажатия клавиши для удаление, конец, ввод, выход, функциональные клавиши, домой, вставка, pageUp / Down и табуляция. В Safari код клавиши для удаления неверен в событии нажатия клавиши.

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

Во-вторых, посмотрите на код клавиши, и если это delete или backspace, то не предотвращайтеDefault.

if ((event.keyCode != 46 && event.keyCode != 8) || input_length > (wordNum - 1)) {
    return false;
} else {
    return true;
}
9
ответ дан 30 November 2019 в 00:52
поделиться

просто используйте return true; в конце вашего eventHandler. Это всплывет в браузере.

4
ответ дан 30 November 2019 в 00:52
поделиться

Разве

if maxwords
   preventDefault
else
   return true

не поможет?

8
ответ дан 30 November 2019 в 00:52
поделиться

Не похоже, https://developer.mozilla.org/en/DOM/event , но вы можете просто не называть это ...

3
ответ дан 30 November 2019 в 00:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: