是否有可能以某种方式将 放在用户超过140个字符限制时输入的字符上,现在为-1负数等。比如,修改文本的背景变红了。
$(".comment-box").keydown(function () {
var parent = $(this).parent();
var text_max = 140;
var length_reached = $(this).val().length;
var remaining = text_max - length_reached;
$(parent).find('.counter').html(remaining);
if (remaining < 5 || remaining >= text_max) $(parent).find(".btn").prop("disabled", true);
else $(parent).find(".btn").prop("disabled", false);
});
这是我的小提琴:http://jsfiddle.net/3sCfG/56/
编辑:wrap或wrapInner很好用,我使用的keyup事件可能有问题,因为它添加了太多的em标签,是否有一个很好的解决方案来获得140限制后的每个char并包裹append每个内部一个 ?
这是来自Twitter的截图,我想强调这样的文字:
答案 0 :(得分:5)
您不能仅为textarea
的某些部分设置样式,但您可以使用contenteditable进行设置。你应该做的是创建一个标准的div(将其设计为textarea)并使其成为可信的。然后在div中放入一个onkey事件并检查长度是否高于140.如果是获取文本,将其切片,并将html应用于多余的。
请注意,您希望使用element.textContent
获取文字内容,并将html写入element.innerHTML
。
您应该做的另一件事是处理粘贴事件,因为默认情况下,浏览器会复制html,因此它们会让您满意。
编辑:
如果您必须在表单中使用它,则需要textarea
或input hidden
存储div内容并发送请求。
要做到这一点,你可以在jquery中做这样的事情:
$('#form').submit(function(e) {
var input = $('#inputdiv').text();
if(input.length <= 140) {
$('#formtextarea').val(input);
return true;
}
return false;
});
或者你可以用ajax做到这一点。
function sendStuff() {
$.post("test.php", { message: $('#inputdiv').text()})
.done(function(data) {
// do something here
});
}