jQuery:我如何用textarea的$('#myId')。attr('value')中的另一个文本替换一些文本?

时间:2016-01-14 15:45:52

标签: javascript jquery html

如何用textarea的$('#myId').attr('value')中的其他文字替换某些文字?

我试过这样的事情:

$(function() {
    var selection;
    var replaceStr;

    var prependStr = "";
    var appendStr = "";

    var temp = "";

    $('input[type="button"]').click(function() {
        if($(this).attr('id') == 'underline')
        {
            prependStr = "<span style = 'text-decoration: underline;'>";
            appendStr = "</span>";
        }
        else if($(this).attr('id') == 'italic')
        {
            prependStr = "<span style = 'font-style: italic;'>";
            appendStr = "</span>";
        }
        else if($(this).attr('id') == 'bold')
        {
            prependStr = "<span style = 'font-weight: bold;'>";
            appendStr = "</span>";
        }
        else if($(this).attr('id') == 'center')
        {
            prependStr = "<span style = 'text-align: center;'>";
            appendStr = "</span>";
        }
        else if($(this).attr('id') == 'link')
        {
            prependStr = "<a href = ''>";
            appendStr = "</a>";
        }
        else if($(this).attr('id') == 'img')
        {
            prependStr = "<img src = '";
            appendStr = "' />";
        }
        else if($(this).attr('id') == 'h1')
        {
            prependStr = "<h1>";
            appendStr = "</h1>";
        }
        else if($(this).attr('id') == 'h2')
        {
            prependStr = "<h2>";
            appendStr = "</h2>";
        }
        else if($(this).attr('id') == 'h3')
        {
            prependStr = "<h3>";
            appendStr = "</h3>";
        }

        $('#page').focus();
        selection = window.getSelection();

        if(selection != '')
        {
            replaceStr = prependStr+selection+appendStr;

            temp = $('#page').attr('value');
            temp.replace(selection, replaceStr);//Not working

            $('#page').attr('value', temp);
        }
    });

});

整个代码正常工作,执行函数.r​​eplace()。我搜索了很多东西,但我没有在$('#page')。attr('value')上找到一个函数来执行此操作。

2 个答案:

答案 0 :(得分:2)

查看this link

temp.replace(selection,replaceStr)不会更改变量“temp”。它返回一个新字符串。

这样做: temp = temp.replace(selection,replaceStr); $('#page')。attr('value',temp);

答案 1 :(得分:1)

$('#page').attr('value');返回一个字符串,字符串是不可变的,这意味着当你执行temp.replace(selection, replaceStr);时它实际上并没有改变字符串对象,它所做的就是创建另一个字符串对象,所以它不会t改变textarea的值。

哟可以得到你想要的东西

var textarea = $('#page');
textarea.val(textarea.val().replace(selection, replaceStr));

顺便说一下,jqueryElement.val(value)相当于jqueryElement.attr('value', value),用于设置该值。