我有一个带有textarea
和button
的HTML表单,当选择了部分文本时,它会调用下面的函数。使用单击按钮的de id和所选文本,我想通过POST
方法调用php脚本。
$(document).ready(function() {
$(".postbit_buttons").on("click", ".quoted_clicked", function() {
var post = this.id;
var selected = GetSelectedText();
alert(" post = " + post + " seleted text = " + selected);
$.post("test_quoted.php", {
pid: post,
selection: selected
})
.done(function() {
alert("done")
});
});
});
在此处找到了获取选择的函数GetSelectedText()
。
第一个警报显示正确的信息。但是,单击确定后,我在浏览器控制台上收到以下错误消息:
TypeError:在未实现的对象上调用'collapse' 界面选择。
我在论坛软件的另一部分中使用了类似的构造,这是其中的一部分,这是有效的。
我盯着这眼看着我的痛苦,却无法找到原因。有没有人可以帮我这个?
@Rory 函数GetSelectedText()的代码是:
function GetSelectedText()
{
var selectedText=(
window.getSelection
?
window.getSelection()
:
document.getSelection
?
document.getSelection()
:
document.selection.createRange().text
);
if(!selectedText || selectedText=="")
{
if(document.activeElement.selectionStart)
{
selectedText = document.activeElement.value.substring(
document.activeElement.selectionStart
. document.activeElement.selectionEnd);
}
}
return selectedText;
}
感谢Rory的问题,我尝试了一些事情。我发现存储所选文本的变量“已选择”是导致错误的原因。我现在使用以下版本的GetSelectedText():
function GetSelectedText () {
if (window.getSelection) { // all browsers, except IE before version 9
var range = window.getSelection ();
return range.toString ();
}
else {
if (document.selection.createRange) { // Internet Explorer
var range = document.selection.createRange ();
return range.text;
}
}
}
它有效!! 对不起,打扰你。我从1968年开始练习编程,但几乎100%是使用FORTRAN进行科学计算。 Javascript对我来说很新鲜。
此致,Ad Bakker