超过140限制时如何插入<em>标签,即去负?</em>

时间:2013-06-05 21:14:12

标签: jquery html css

是否有可能以某种方式将 放在用户超过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的截图,我想强调这样的文字:

enter image description here

1 个答案:

答案 0 :(得分:5)

您不能仅为textarea的某些部分设置样式,但您可以使用contenteditable进行设置。你应该做的是创建一个标准的div(将其设计为textarea)并使其成为可信的。然后在div中放入一个onkey事件并检查长度是否高于140.如果是获取文本,将其切片,并将html应用于多余的。

请注意,您希望使用element.textContent获取文字内容,并将html写入element.innerHTML

您应该做的另一件事是处理粘贴事件,因为默认情况下,浏览器会复制html,因此它们会让您满意。

编辑: 如果您必须在表单中使用它,则需要textareainput 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
    });
}