如何让Javascript Word Counter在IE中运行

时间:2014-09-26 02:05:08

标签: javascript jquery word-count

我是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();
    }
});

2 个答案:

答案 0 :(得分:0)

你可以试试这个

<!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>

答案 1 :(得分:0)

javascript 拆分方法可以解决问题。 尝试更新的小提琴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);
        }
    });
    });

希望有所帮助:)