【问题标题】:How to make Javascript Word Counter work in IE如何使 Javascript Word Counter 在 IE 中工作
【发布时间】:2014-11-20 22:56:42
【问题描述】:

我是 JavaScript 新手。我使用 JavaScript 在表单上设置了字数计数器。它适用于所有浏览器,除了 - 你猜对了 - IE。在 IE9 和 IE11 中,计数器都是不可靠的,整个字段可能会“冻结”并且不允许您单击它并编辑任何内容。

为什么会在 IE 中崩溃?而如果不能通过简单的方式修复,有没有办法只在浏览器不是IE的情况下有条件地使用脚本?

这是一个表单的演示:http://nzensandbox.wpmakeover.com/

还有代码:

$("#field_advstatement").on('keydown', function(e) {
    var words = $.trim(this.value).length ? this.value.match(/\S+/g).length : 0;
    if (words <= 50) {
        $('#display_count2').text(words);
        $('#word_left2').text(50-words)
    }else{
        if (e.which !== 8) e.preventDefault();
    }
});

【问题讨论】:

  • IE控制台报错是什么?
  • 您最好在jsfiddle.net 上创建一个小测试用例,我们可以在其中复制问题
  • 顺便说一句,上面链接中的字段公司声明(50 个字)在 Chrome 中也不起作用。尝试输入“eeeeeeeeeeeeeeeeeeeeee”。它总是给出总字数:1 个字。剩余字数:49
  • 为什么“eeeeeeeeeeeeeeeeeeeeee”不能算作一个词?

标签: javascript jquery word-count


【解决方案1】:

你可以试试这个

<!DOCTYPE html>
<html>
  <head>
    <script src="http://code.jquery.com/jquery-1.5.js"></script>
    <script>
      function countChar(val) {
        var len = val.value.length;
        if (len >= 50) {
          val.value = val.value.substring(0, 50);
        } else {
          $('#charNum').text(50 - len);
        }
      };
    </script>
  </head>

  <body>
    <textarea id="field" onkeyup="countChar(this)"></textarea>
    <div id="charNum"></div>
  </body>

</html>

【讨论】:

    【解决方案2】:

    javascript split 方法可以解决问题。 试试更新的小提琴click here

        $(document).ready(function(){
                var countMyWords = function(obj){
                var $input = $(obj);
                var words = $input.val().trim().split(' ');
    
                $('#display_count2').text(words.length);
                $('#word_left2').text(50 - words.length);
    
    
            }
            $('#field_advstatement').on({
                keyup
    
     : function(event){
                        if(event.which == 8){
                            countMyWords(this);
                    return true;
                }
               var len = $(this).val().length;
                if (len >= 50) {
                    event.preventDefault();
    
                }
    
               countMyWords(this);
    
            },
            keydown: function(event){
                if(event.which == 8){
                  countMyWords(this);
                    return true;
                }
    
                var len = $(this).val().length;
                if (len >= 50) {
                    event.preventDefault();
                }
               countMyWords(this);
            }
        });
        });
    

    希望对你有帮助:)

    【讨论】:

    • 谢谢。我太密集了,不知道如何将其应用于我的代码 - jsfiddle.net/trishacupra/g2uthuxn 它似乎在计算字符而不是单词,我不确定如何进行倒计时和计数。
    猜你喜欢
    • 2020-11-29
    • 1970-01-01
    • 2012-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-02
    相关资源
    最近更新 更多