尝试运行以下代码时出现undefined is not a function
错误:
$(document).ready(function() {
$("#textarea").select(function() {
var selection = window.getSelection();
$("#upper").click(function() {
// alert(selection);
var upper = selection.toUpperCase();
var text = $("#textarea").text();
$("#textarea").html(text.replace(selection, upper));
});
});
});
我尝试从textarea中选择文本,然后单击按钮使选择大写。这是完整代码的JSFiddle。
答案 0 :(得分:4)
getSelection
返回一个对象。您需要在其上调用toString()
。
$(document).ready(function () {
var selection;
$("#textarea").select(function () {
selection = window.getSelection().toString();
});
$("#upper").click(function () {
if (selection) {
var upper = selection.toUpperCase();
var text = $("#textarea").text();
$("#textarea").html(text.replace(selection, upper));
}
});
});
JSFiddle:http://jsfiddle.net/TrueBlueAussie/8syb2d8j/4/
注意:
replace
实际上并不是一个很好的解决方案。尝试突出显示第二个i
,看看我的意思。您应该使用选择对象的属性来计算所选字符串的确切部分在浏览了便携式解决方案之后,我发现了基于jQuery TextRange plugin的the demo {{3}}对于此问题已经足够了。