jquery - JavaScript 中是否有与 PreventDefault() 相反的函数?

标签 jquery function firefox jquery-events preventdefault

我正在计算文本字段中的单词数,并且在达到一定数量的单词后,我使用阻止默认值。在其他情况下,我想重新启用默认命令。

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 不喜欢它。

最佳答案

我认为您遇到的问题是您没有寻找删除键。 Preventdefault 不会一起取消事件处理程序。但是,使用您的代码,一旦达到字段的最大长度,用户将无法再删除任何字符,因为删除按键已被取消。

它在 IE 中工作的原因是因为 IE 不会触发删除、结束、输入、转义、功能键、home、插入、pageUp/Down 和 tab 的按键事件。在 Safari 中,按键事件中用于删除的键码不正确。

出于这些原因,我有一个双重建议;首先,使用 keydown 事件,以便获得正确的键码。

其次,查看键码,如果是删除或退格键,则不要阻止默认。

if ((event.keyCode != 46 && event.keyCode != 8) || input_length > (wordNum - 1)) {
    return false;
} else {
    return true;
}

关于jquery - JavaScript 中是否有与 PreventDefault() 相反的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1688567/

相关文章:

javascript - jQuery $.data() 方法与直接将变量附加到 DOM 元素有何不同?

javascript - JQuery 简单切换不起作用

javascript - 从下拉列表中选择后触发更改事件

html - 在带有 URL 扩展名的页面中突出显示单词

javascript - jQuery.getJSON 可以将域的 cookie 放在它发出的请求的 header 中吗?

javascript - jQuery 缓动弹跳动画

php - 功能导致脚本停止在PHP

javascript - 在javascript中用两种方式创建的运行函数

javascript - 这个没有运算符的 "if"是如何工作的?

javascript - 阻止 Firefox 应用程序的多个实例