Clicking on the textarea changes the cursor's position

I've been working on adding an emoji function, but I'm facing an issue. Whenever I select an emoji from the dropdown while having text in the textarea and the cursor placed at the beginning of the text, the emoji always gets added to the end like this:

Some text here 😃

Here's the code I'm using:

function insertSmiley(smiley)
{
var currentText = document.getElementById("textarea");
var smileyWithPadding = " " + smiley + " ";
currentText.value += smileyWithPadding;
currentText.focus();
}

I already attempted removing currentText.focus();, but it didn't work. I even tried using jQuery to maintain focus on the textarea, yet the emoji still ends up at the end of the text:

$(window).load(function(){    
var lastFocus;
$("#dropdown-emojis").mousedown(function(e) {
return false;
}); 
});

Is there a way for me to make the emoji appear where the cursor is placed?

Answer â„–1

Make use of .selectionStart and .selectionEnd to identify the cursor's position.

let startPosition = myElement.selectionStart;
    let endPosition = myElement.selectionEnd;
    if(startPosition == endPosition){ 
        newString= currentText.value.substring(0,startPosition) + " " + smiley + " " + currentText.value.subString(endPosition,currentText.value.length());

Similar questions

If you have not found the answer to your question or you are interested in this topic, then look at other similar questions below or use the search

A-Frame: Utilize a distinct edition or a precise commit of three.js

I have come across a particular commit on GitHub that has not been merged into the main Three.js repository. I believe this commit may provide a solution to a specific issue I am facing. Can someone guide me on how to incorporate this specific commit int ...

Error message: JavaScript is unable to save data to an array retrieved from Ajax, resulting in

I am facing an issue with retrieving continuous data from the database using AJAX and storing it in a JavaScript variable. Despite my efforts, I am unable to populate an array with the retrieved values as they always end up being undefined. Below are the s ...

Limiting Ant Design Date range Picker to display just a single month

insert image description here According to the documentation, the date range picker is supposed to display two months on the calendar, but it's only showing one month. I carefully reviewed the documentation and made a change from storing a single va ...

Add a fresh category to a JSON document

Combining Express (Node.js) and Mongoose, I am developing a REST API and attempting to implement JWT token-based login. However, I have encountered an issue. Upon executing the code below: const mongoose = require('mongoose'); const User = mongo ...

Is it possible for React Server Side rendering to be re-rendered on the client side?

In this demonstration of isomorphic rendering found at https://github.com/DavidWells/isomorphic-react-example, the author showcases Server Side Rendering by disabling Javascript. However, if JavaScript is enabled on the frontend, does it trigger a re-rende ...

Having trouble viewing PDF files after uploading them to S3. Uploading images is working without any issues in NodeJS

For a while now, I've been using the aws-sdk to upload images with no issues. However, I recently tried to upload a PDF and encountered a problem. Even though the upload seems successful, I get an error message saying Failed to load PDF document. I a ...

Utilize Google Sheets to extract information from a web address containing quotation marks

I am currently utilizing a script called "ImportJSON" developed by paulgambill https://gist.github.com/paulgambill/cacd19da95a1421d3164 The URL I am working with contains quotes characters For instance: http://SomeAPIULR?{"Type": "SomeType"}&APIKE ...

Retrieve the chosen language while utilizing the $translate feature

I have successfully integrated the $translate project from this source into my AngularJS application. While I have configured the default language in my app.config() using $translateProvider, I am now wondering how to retrieve the selected language within ...

After following the official guide, I successfully installed Tailwind CSS. However, I am facing issues with utilizing the `bg-black` className for styling the background,

Following the installation guide for Tailwind CSS, I ran the command npm install -D tailwindcss postcss autoprefixer npx tailwindcss init -p. Despite this, the background className (bg-black) is not working as expected. Here are the file paths: Directory ...

Appreciating the Importance of Generator Functions in JavaScript

Can someone help me understand the practicality of using generator functions in JavaScript? I know they can be used for iterating through custom data types, but I'm not entirely convinced that they are superior to standard iteration techniques. For a ...

Using require to access an Immediately Invoked Function Expression variable from another file in Node.js

File 1 - Monitor.js var MONITOR = (function () { // Code for Monitoring return { doThing: function() { doThing(); } }; })(); File 2 - Test.js var monitor = require('../public/js/monitor.js'); I am trying to access the doThing() funct ...

Incorporate vanilla JavaScript and HTML into a Next.js application

I am facing an issue where I have a file that contains JavaScript and HTML code, which needs to be rendered within a Next.js application. The challenge is that the code in the file cannot be converted to JSX, and React Helmet does not seem to render anythi ...

Tips for displaying a pre-filter loading message using AngularJS

Is there a way to display a "Loading Message" prior to the filtered data being returned when using AngularJS for filtering? The filter process is quick, so displaying the message before returning the filtered data is not feasible. Here is an example of the ...

Issue with Thickbox - showing up towards the end of the page

I'm encountering a strange issue with a PHP page in Wordpress. When I include an inline Thickbox on the page and try to open it, the Thickbox appears at the very bottom of the page, below the footer. Interestingly, I copied the generated HTML code an ...

What's the reason behind the refusal of my connection to localhost at port 3000 in Node.JS?

As a student venturing into the world of back-end development for the first time, I decided to dive into learning Node.JS. To kick things off, I downloaded a PDF book titled "Jumpstart Node.JS" from SitePoint. Following the provided instructions, I attempt ...

Having difficulty retrieving the initial selection value

Despite receiving all other values, I am unable to retrieve the event.everyday value. Can you please help me identify what I might be doing incorrectly? Situation - Choose Every day from the dropdown menu. Click on the "click it" button and review the ...

What is the best way to apply a Javascript function to multiple tags that share a common id?

I am experimenting with javascript to create a mouseover effect that changes the text color of specific tags in an HTML document. Here is an example: function adjustColor() { var anchorTags = document.querySelectorAll("#a1"); anchorTags.forEach(func ...

The combination of Masonry, FlexSlider, and endless scrolling functionality creates a

I am currently using the Masonry layout and implementing infinite scroll functionality through a jQuery plugin. Within this content, I have various FlexSlider slideshows. Unfortunately, when I trigger the infinite scroll feature, the slider does not displa ...

The Mongodb database is failing to recognize updates made to the Mongoose schema

I have already created my database with the following schema: const ProjectSchema = new mongoose.Schema({ name: { type: String }, description: { type: String }, client: { type: mongoose.Schema.Types.ObjectId, ref: 'client& ...

Discover the step-by-step guide for inserting personalized HTML into the current widget screen on Odoo 12 with

For the past 3 days, I've been stuck trying to figure out how to print order items. My goal is to have a custom HTML code added to a div with the class 'order-print' when the Order button is clicked. I am using odoo 12 and facing issues wit ...