在ie8-中为textarea模拟maxlength和日文字符

时间:2014-07-07 22:16:42

标签: javascript jquery internet-explorer ime double-byte

我正在尝试为较低版本的Internet Explorer(ie8,ie7)中的textarea模拟maxlength的HTML5行为:

 <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script>
 <textarea maxlength="200"></textarea>

 <script type="text/javascript">
 $(document).ready(function() {
    $(document).delegate('textarea[maxlength]', 'keyup paste change', function(e) { 

        var limit = parseInt($(this).attr('maxlength'));  
        var text = $(this).val();  
        var chars = text.length;  

        if(chars > limit){  
            var new_text = text.substr(0, limit);  

            $(this).html(new_text);  
        }  
    });  
});
</script>

问题行为是,如果我输入201个日文字符,textarea将调整文本只显示前200个字符,如预期的那样,但是当textarea通过点击它而失去焦点时,textarea将只显示第201个日文字符。如果您输入第201个字符作为英文字符,则不会发生此问题。我正在使用Windows日语IME输入日文字符,如果是相关细节的话。

ETA:我相信现在这是一个问题,Javascript与日本IME不相称,但我仍然不知道如何修复它。

1 个答案:

答案 0 :(得分:1)

这种行为几乎可以肯定是由于日语IME在触发各种Javascript事件后更改了输入。我发现的最佳解决方案是更改上面的代码,使其由&#34; blur&#34;触发。事件,而不是&#34;模糊&#34;似乎总是在日本IME完成编辑后发生。