我正在尝试在较低版本的 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 不兼容的问题,但我仍然不知道如何修复它。