限制字符输入数功能是一个常见的表单输入处理需求,它可以帮助用户在输入时保证输入内容的合法性。
jQuery版
在jQuery中,可以利用keypress
事件或input
事件来实现限制字符输入数功能。其中keypress
事件适用于文本框或文本域等只能输入文本的元素,input
事件适用于多种输入方式的元素,如文本框、文本域、下拉框等。
方案一
通过maxlength
属性限制input输入框输入的内容长度:
<input type="text" maxlength="10" />
HTML5 支持 maxlength
属性。它能够限制用户输入到 和
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>title</title>
<script src="//code.jquery.com/jquery-1.9.1.min.js"></script>
<style>
input[readonly="readonly"] {
background-color: #ccc;
color: #fff;
border: none;
}
input:focus {
outline: none;
}
</style>
</head>
<body>
<form>
<input name="input" type="text" maxlength="50">
<span class="charNum">50</span>
</form>
<script>
$('input[name="input"]').keyup(function() {
var counter = $(this).val().length;
$('.charNum').text(50 - counter);
if (counter == 50) {
$(this).attr("readonly", "readonly");
} else if (counter < 50) {
$(this).removeAttr("readonly");
}
});
</script>
</body>
</html>
- 表单名称为
form
,元素名称为input
。 - 通过添加
readonly
属性标记来限制输入框的可编辑性。 - 通过事件绑定到
keyup
事件,监控input
值得变化,并计算剩余字符数。 - 当剩余字符数为0时,通过添加
readonly
属性标记来限制输入框的可编辑性。
方案二
使用jQuery实现输入框字符数限制。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Jquery实现输入框长度限制</title>
<script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script>
<style>
.normalFont {
color: #333;
}
.cutFont {
color: red;
}
.beyondCutFont {
color: #ccc;
}
input {
width: 100%;
padding: 8px;
}
</style>
<script>
function checkText() {
var text = $('#text_input').val();
if (text.length <= 10) {
$('#text_len').text(text.length);
$('#text_input').removeClass('cutFont').removeClass('beyondCutFont').addClass('normalFont');
} else if (text.length > 10 && text.length <= 20) {
$('#text_len').text(text.length);
$('#text_input').removeClass('normalFont').removeClass('beyondCutFont').addClass('cutFont');
} else {
$('#text_len').text(20);
$('#text_input').prop('maxlength', 20);
$('#text_input').removeClass('normalFont').removeClass('cutFont').addClass('beyondCutFont');
}
}
$(function () {
$('#text_input').on('input propertychange', checkText);
});
</script>
</head>
<body>
<form>
<fieldset>
<legend>Jquery实现输入框长度限制</legend>
<p>
<input type="text" id="text_input" maxlength="20">
<span>剩余<input type="text" id="text_len" value="0" readonly="readonly">个字符</span>
</p>
</fieldset>
</form>
</body>
</html>
- input、id和maxlength等属性都定义在HTML里面
- 当用户输入到了指定的 maxlength 的时候,会自动将输入文本框设置为只读
- 可以通过CSS的方式,来预设不同的文本输入字符超级的样式效果
- 每输入一次字符,都会重新计算新的字符长度,同时也会重新设置颜色样式
原生JS版
在原生JS中,可以利用oninput
事件实现限制字符输入数功能。该事件能够监控用户输入的有效字符,并通过字符串的长度来限制输入。同时,该事件对于大部分浏览器都支持,实现起来比较方便。
方案一
通过设置element的maxlength来限制内容长度:
<label>最多输入10个字符:<input type="text" id="test-input" maxlength="10"></label>
<p id="msg"></p>
<script>
var input = document.getElementById("test-input");
var msg = document.getElementById("msg");
input.addEventListener("input", function(){
msg.textContent = "剩余字符数: " + (input.maxLength - input.value.length);
}, false);
</script>
- 手动输入或复制文字都可以改变数字大小
- input.maxLength 表示一个 textarea 或 input 的maxlength 属性,表示输入框可输入的字符个数。
方案二
设置函数当字符超过指定限制时,就设定input的maxlength属性:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>input输入框中限制字符串长度的几种方法</title>
</head>
<body>
<input type="text" id="text_input" maxlength="20">
<span id="text_len_span">剩余20个字符</span>
<div id="max_overflow">已经达到最大字符长度!</div>
<script>
var input_ele = document.getElementById("text_input");
var max_Overflow = document.getElementById("max_overflow");
input_ele.oninput = function() {
if (this.value.length <= 10) {
document.getElementById("text_len_span").innerHTML = "剩余" + (20 - input_ele.value.length) + "个字符";
} else {
input_ele.value = input_ele.value.substring(0, 20);
max_Overflow.style.display = "block";
document.getElementById("text_len_span").innerHTML = "剩余" + (20 - input_ele.value.length) + "个字符";
input_ele.maxLength = "20";
}
}
input_ele.onblur = function() {
max_Overflow.style.display = "none";
input_ele.maxLength = "20";
}
</script>
</body>
</html>
- 只能输入 20 字以内的数字中文等
- 超出20个的字符长进行截取,使其为20个字符长
- 输入到了20个字符,就提示已经达到最大字符长度
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:限制字符输入数功能(jquery版和原生JS版) - Python技术站