Twitter的提交推文文本框突出显示超出角色限制的字符:
如您所见,超出字符限制的字符以红色突出显示。我怎样才能实现这样的目标呢?
答案 0 :(得分:3)
您将在此处找到必要的解决方案和所需的代码:
How to insert <em> tag when exceeding 140 limit i.e. going negative?
......在这里:
REGEX - Highlight part over 19 chars
您的问题似乎是双重的。
注意:我没有选择将上述链接作为评论发布(即根据声誉享有特权)。
这是根据Simon Kuang的建议(见评论)的代码:
<!DOCTYPE html>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
<meta charset=utf-8 />
<title>JS Bin</title>
</head>
<body>
<h3>Your text here</h3>
<div contenteditable="true" id="myDiv">edit me
</div>
<p>
<h3>Stuff over 19 characters</h3>
<div id="extra">
</div>
<p>
<h3>Sample output</h3>
<div id="sample">
</div>
</body>
</html>
.highlight {
color:red;
}
$(document).ready(function() {
$('#myDiv').keyup(function() {
var content = $('#myDiv').html();
var extra = content.match(/.{19}(.*)/)[1];
$('#extra').html(extra);
var newContent = content.replace(extra, "<span class='highlight'>" + extra + "</span>");
$('#sample').html(newContent);
});
});
答案 1 :(得分:1)
以下是示例,在达到限制时显示警告,然后突出显示输入的所有字符。
$(document).ready(function() {
var input = $('#text_text');
var warning = $('#warning');
var char_limit = 30;
input.on('keyup', function() {
var val = $(this).val();
if (val.length > parseInt(char_limit)) {
alert("limit reached");
warning.html('hello').css('display', 'block');
l = val.length
var input = document.getElementById("text_text");
input.setSelectionRange(char_limit, l);
input.focus();
} else {
warning.css('display', 'none');
}
});
});
#warning {
display: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="test_box">
<textarea name="msg" cols="50" rows="5" id="text_text"></textarea>
<div id="warning"></div>
</div>
答案 2 :(得分:0)
试试这个(模式)
HTML
<data></data><br />
<textarea maxlength="20" placeholder="20 character limit"></textarea>
JS
$(function () {
$(document).on("keyup", "textarea", function (e) {
if ($(e.target).val().length >= 20) {
$("data").text($(e.target).attr("placeholder"))
.fadeIn(1000).fadeOut(9000);
};
});
});