In My Application I have read the text file from a directory and placed it inside a div as mentioned below
$pageText = fread($fh, 25000); ?>
<div id="click">Hai
<?php echo nl2br($pageText);
?> </div>
Now what i have done is , On click on the div it copies the entire text in a div to a text field,This is my javascript for it ,it works perfectly to copy the entire div but now what i need is i want to copy only the selected text from a div to a text field on double click
<script type="text/javascript">
$(document).ready( function() {
$('#click').click(function() {
$("#txtMessage").insertAtCaret($(this).text());
return false
});
});
$.fn.insertAtCaret = function (myValue) {
return this.each(function(){
//IE support
if (document.selection) {
this.focus();
sel = document.selection.createRange();
sel.text = myValue;
this.focus();
}
//MOZILLA / NETSCAPE support
else if (this.selectionStart || this.selectionStart == '0') {
var startPos = this.selectionStart;
var endPos = this.selectionEnd;
var scrollTop = this.scrollTop;
this.value = this.value.substring(0, startPos)+ myValue+this.value.substring(endPos,this.value.length);
this.focus();
this.selectionStart = startPos + myValue.length;
this.selectionEnd = startPos + myValue.length;
this.scrollTop = scrollTop;
} else {
this.value += myValue;
this.focus();
}
});
};
</script>
Here is how to get the selected text with double click,
First you need to set focus one of the inputs before double click the text.
DEMO http://jsfiddle.net/yeyene/GYuBv/15/
$(document).ready(function () {
$("input[type=text]").focus(function(){
$("input[type=text]").removeClass('lastFocus');
$(this).addClass('lastFocus');
});
$('#myDiv').dblclick(function() {
$('#selected').append(getSelectionText());
$("input[type=text].lastFocus").val($("input[type=text].lastFocus").val()+getSelectionText());
});
});
function getSelectionText() {
var text = "";
if (window.getSelection) {
text = window.getSelection().toString();
} else if (document.selection && document.selection.type != "Control") {
text = document.selection.createRange().text;
}
return text;
}
$.fn.insertAtCaret = function (myValue) {
return this.each(function () {
if (document.selection) {
this.focus();
sel = document.selection.createRange();
sel.text = myValue;
this.focus();
}
else if (this.selectionStart || this.selectionStart == '0') {
var startPos = this.selectionStart;
var endPos = this.selectionEnd;
var scrollTop = this.scrollTop;
this.value = this.value.substring(0, startPos) + myValue + this.value.substring(endPos, this.value.length);
this.focus();
this.selectionStart = startPos + myValue.length;
this.selectionEnd = startPos + myValue.length;
this.scrollTop = scrollTop;
} else {
this.value += myValue;
this.focus();
}
});
};
Try this:
$('#click').dblclick(function() {
var text = '';
if (window.ActiveXObject) {
text = document.selection.createRange().htmlText;
} else {
text = getSelection().getRangeAt(0);
}
$("#txtMessage").insertAtCaret(text);
return false;
});
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.