我必须在单击事件时将文本区域中突出显示的文本保存到数据库中我该怎么做。我从中找到了一些代码,但它对我不起作用。
$('#send').on("click", function(){
ShowSelection();
});
function ShowSelection()
{
var textComponent = $('#my-content span').val();
console.log(textComponent);
var selectedText;
if (textComponent.selectionStart !== undefined)
{// Standards Compliant Version
var startPos = textComponent.selectionStart;
var endPos = textComponent.selectionEnd;
selectedText = textComponent.value.substring(startPos, endPos);
}
else if (document.selection !== undefined)
{// IE Version
textComponent.focus();
var sel = document.selection.createRange();
selectedText = sel.text;
}
alert("You selected: " + selectedText);
}
你的代码有很多问题:
selectionStart
和selectionEnd
是表单元素(input,textarea(的属性,但$('#my-content span')
显然找到了<span>
元素。
$('#my-content span').val()
将返回一个字符串(在输入的情况下,它是该输入的值,但在您的情况下,它将为空,因为您将它应用于 span 元素。
textComponent.selectionStart
:由于textComponent
是一个字符串而不是一个HTML元素,因此textComponent
上没有属性selectionStart
。
--
<textarea>
元素的工作示例(请参阅此处(:
var startPos = $('textarea')[0].selectionStart
// etc.
<span>
元素的工作示例(请参阅此处(:
var selectedText = window.getSelection().toString()