我正在尝试为较低版本的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不相称,但我仍然不知道如何修复它。
答案 0 :(得分:1)
这种行为几乎可以肯定是由于日语IME在触发各种Javascript事件后更改了输入。我发现的最佳解决方案是更改上面的代码,使其由&#34; blur&#34;触发。事件,而不是&#34;模糊&#34;似乎总是在日本IME完成编辑后发生。