在Web开发中,限制textarea输入框的最大字符数是常见的需求,这可以防止用户输入过多内容导致数据库存储问题或界面显示问题。
<textarea id="myTextarea" maxlength="200"></textarea>
<div id="charCount">剩余字符数: 200</div>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script>
$(document).ready(function() {
const maxLength = 200;
const $textarea = $('#myTextarea');
const $charCount = $('#charCount');
$textarea.on('input', function() {
const currentLength = $(this).val().length;
const remaining = maxLength - currentLength;
$charCount.text('剩余字符数: ' + remaining);
if (currentLength >= maxLength) {
$(this).val($(this).val().substring(0, maxLength));
}
});
});
</script>
$(document).ready(function() {
const maxLength = 200;
const $textarea = $('#myTextarea');
const $charCount = $('#charCount');
$textarea.on('input', function() {
const currentLength = $(this).val().length;
const remaining = maxLength - currentLength;
$charCount.text(remaining);
// 根据剩余字符数改变样式
if (remaining < 0) {
$charCount.css('color', 'red');
$(this).val($(this).val().substring(0, maxLength));
} else if (remaining < 20) {
$charCount.css('color', 'orange');
} else {
$charCount.css('color', 'green');
}
});
});
解决方案:
// 兼容性处理
if (!('maxLength' in document.createElement('textarea'))) {
$('textarea[maxlength]').on('keypress', function(e) {
var max = parseInt($(this).attr('maxlength'), 10);
if (this.value.length >= max) {
e.preventDefault();
}
});
}
解决方案:
$textarea.on('paste', function(e) {
const clipboardData = e.originalEvent.clipboardData || window.clipboardData;
const pastedText = clipboardData.getData('text');
const currentText = $(this).val();
if (currentText.length + pastedText.length > maxLength) {
e.preventDefault();
const allowedText = pastedText.substring(0, maxLength - currentText.length);
document.execCommand('insertText', false, allowedText);
}
});
解决方案:
$textarea.on('input', function() {
// 将换行符统一为一个字符计算
const text = $(this).val().replace(/\r\n/g, '\n');
const currentLength = text.length;
// 其余逻辑...
});
没有搜到相关的文章