Here is the requirement:

I have a Visualforce page with inputfield which is a rich text field. I want to insert a timestamp value where ever the cursor is present. I have a code that runs perfectly on a html textarea [jsFiddle: https://jsfiddle.net/et9borp4/] but I am not able to make it work on Salesforce's inputField.

Here is the code:

    <script>
       $j = jQuery.noConflict();
       $j(document).ready(function(){
            $j('.insert-timestamp-btn').click(function(){
                var tstamp = new Date();
                insertAtCursor($j('#notes'),formatDate(tstamp));
            });
       });
    
          function insertAtCursor(myField, myValue) {
                //IE support
                if (document.selection) {
                    myField.focus();
                    sel = document.selection.createRange();
                    sel.text = myValue;
                }
                // Microsoft Edge
                else if(window.navigator.userAgent.indexOf("Edge") > -1) {
                  var startPos = myField.selectionStart; 
                  var endPos = myField.selectionEnd; 
                      
                  myField.value = myField.value.substring(0, startPos)+ myValue 
                         + myField.value.substring(endPos, myField.value.length); 
                  
                  var pos = startPos + myValue.length;
                  myField.focus();
                  myField.setSelectionRange(pos, pos);
                }
                //MOZILLA and others
                else if (myField.selectionStart || myField.selectionStart == '0') {
                    var startPos = myField.selectionStart;
                    var endPos = myField.selectionEnd;
                    myField.value = myField.value.substring(0, startPos)
                        + myValue
                        + myField.value.substring(endPos, myField.value.length);
                } else {
                    myField.value += myValue;
                }
            }
        
            function formatDate(date) {
                var hours = date.getHours();
                var minutes = date.getMinutes();
                var ampm = hours >= 12 ? 'pm' : 'am';
                hours = hours % 12;
                hours = hours ? hours : 12; // the hour '0' should be '12'
                minutes = minutes < 10 ? '0'+minutes : minutes;
                var strTime = hours + ':' + minutes + ' ' + ampm;
                return date.getMonth()+1 + "/" + date.getDate() + "/" + date.getFullYear() + " " + strTime;
            }
    
    </script>
    
    <apex:form id="form">
         //Notes__c is rich text field in Salesforce
        <apex:inputField id="notes" styleClass="notesClass" value="{!cnotes.Notes__c}"/>
        <button type="button" class="insert-timestamp-btn">Insert Timestamp</button>
    </apex:form>