我是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();
}
});
答案 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);
}
});
});
希望有所帮助:)