微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

jquery – JavaScript中是否存在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,insert,pageUp / Down和tab的按键事件。在Safari中,按键的删除键码在按键事件中不正确。

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

其次,看一下keycode,如果是delete或backspace,那么不要preventDefault。

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

原文地址:https://www.jb51.cc/jquery/182659.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐