如何用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);
}
});
});
整个代码正常工作,执行函数.replace()。我搜索了很多东西,但我没有在$('#page')。attr('value')上找到一个函数来执行此操作。
答案 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)
,用于设置该值。