Javascript 或 Jquery 具有最小文本长度的文本区域计数器?
Javascript or Jquery textarea counter with minimum text length?
当您希望用户在文本区域中输入至少 x 个字符时,我找不到任何示例。没有最大长度,只有最小长度。有什么简单的解决办法吗?
这就是我现在拥有的。
一个简单的文本区域
<textarea id="textComment" name="comment" ></textarea>
Div 显示剩余 x 个字符的区域
<div>Characters left <span id="charsLeft"></span></div>
如果可能,禁用 post 按钮直到达到 x 个字符。
<button onclick="frmComment.submit();return false;">Add comment</button>
这是用jq完成的:
$(document).ready(function(){
//Set this to whatever size you want
var characterSize = ;
$("#charCount").text(characterSize);
$("#textComment").keyup(function() {
count = $("#textComment").val().length;
if(count < characterSize){
$("#charCount").text(characterSize - count);
}
else
{
$("#charCount").text(0);
}
if ($("#textComment").val().length >= characterSize){
$("button").attr('onclick', 'frmComment.submit()', 'return false');
}
else {
$("button").removeAttr('onclick', null);
}
});
});
将 HTML 更改为:
<textarea id="textComment" name="comment" ></textarea>
<div>Characters left: <a id="charCount"></a> <span id="charsLeft"></span></div>
<button >Add comment</button>
当用户插入超过 X 个字符时,jq 将启动并为按钮提供 onclick 属性。在达到字符限制之前,该按钮将不执行任何操作。如果用户写了超过 X 个字符,然后删除了一些,并且数字低于 X,则该按钮将再次不执行任何操作。
我想它可以被简化,但这样你就可以理解它是如何工作的。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
</head>
<body>
<textarea name="" id="textComment" cols="30" rows="10"></textarea>
<script>
var maxln = 5; //write your max length
document.getElementById("textComment").addEventListener("keyup", () => {
if (document.getElementById("textComment").value.length >= maxln) {
document.getElementById("textComment").value = document
.getElementById("textComment")
.value.substring(0, maxln); // this removes any character after max value
}
});
</script>
</body>
</html>
您可以更改文本区域元素的最小长度 => data-minLength="10"
$(document).ready(function() {
$("#textComment").on("keyup", function(){
var minLength = $(this).attr("data-minlength");
var currentLength = $(this).val().length;
var remaining = parseInt(minLength) - parseInt(currentLength)
$("#charsLeft").text((remaining < 0 ? 0: remaining));
if (parseInt(currentLength) < parseInt(minLength))
{
$("#commentBtn").prop("disabled", true);
} else{
$("#commentBtn").prop("disabled", false);
}
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<textarea id="textComment" data-minLength="10" name="comment" ></textarea>
<div>Characters left: <span id="charsLeft"></span></div>
<button id="commentBtn" disabled onclick="frmComment.submit();return false;">Add comment</button>
当您希望用户在文本区域中输入至少 x 个字符时,我找不到任何示例。没有最大长度,只有最小长度。有什么简单的解决办法吗?
这就是我现在拥有的。
一个简单的文本区域
<textarea id="textComment" name="comment" ></textarea>
Div 显示剩余 x 个字符的区域
<div>Characters left <span id="charsLeft"></span></div>
如果可能,禁用 post 按钮直到达到 x 个字符。
<button onclick="frmComment.submit();return false;">Add comment</button>
这是用jq完成的:
$(document).ready(function(){
//Set this to whatever size you want
var characterSize = ;
$("#charCount").text(characterSize);
$("#textComment").keyup(function() {
count = $("#textComment").val().length;
if(count < characterSize){
$("#charCount").text(characterSize - count);
}
else
{
$("#charCount").text(0);
}
if ($("#textComment").val().length >= characterSize){
$("button").attr('onclick', 'frmComment.submit()', 'return false');
}
else {
$("button").removeAttr('onclick', null);
}
});
});
将 HTML 更改为:
<textarea id="textComment" name="comment" ></textarea>
<div>Characters left: <a id="charCount"></a> <span id="charsLeft"></span></div>
<button >Add comment</button>
当用户插入超过 X 个字符时,jq 将启动并为按钮提供 onclick 属性。在达到字符限制之前,该按钮将不执行任何操作。如果用户写了超过 X 个字符,然后删除了一些,并且数字低于 X,则该按钮将再次不执行任何操作。
我想它可以被简化,但这样你就可以理解它是如何工作的。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
</head>
<body>
<textarea name="" id="textComment" cols="30" rows="10"></textarea>
<script>
var maxln = 5; //write your max length
document.getElementById("textComment").addEventListener("keyup", () => {
if (document.getElementById("textComment").value.length >= maxln) {
document.getElementById("textComment").value = document
.getElementById("textComment")
.value.substring(0, maxln); // this removes any character after max value
}
});
</script>
</body>
</html>
您可以更改文本区域元素的最小长度 => data-minLength="10"
$(document).ready(function() {
$("#textComment").on("keyup", function(){
var minLength = $(this).attr("data-minlength");
var currentLength = $(this).val().length;
var remaining = parseInt(minLength) - parseInt(currentLength)
$("#charsLeft").text((remaining < 0 ? 0: remaining));
if (parseInt(currentLength) < parseInt(minLength))
{
$("#commentBtn").prop("disabled", true);
} else{
$("#commentBtn").prop("disabled", false);
}
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<textarea id="textComment" data-minLength="10" name="comment" ></textarea>
<div>Characters left: <span id="charsLeft"></span></div>
<button id="commentBtn" disabled onclick="frmComment.submit();return false;">Add comment</button>