diff --git a/src/digital-components/textbox-question/textbox-question.vue b/src/digital-components/textbox-question/textbox-question.vue index 8a444c01..03538e54 100644 --- a/src/digital-components/textbox-question/textbox-question.vue +++ b/src/digital-components/textbox-question/textbox-question.vue @@ -188,18 +188,29 @@ export default { methods: { trimOnPaste(evt) { evt.stopPropagation(); + evt.preventDefault(); + + const input = document.getElementById(evt.srcElement.id); + const originalValue = input.value; + const startPosition = input.selectionStart; + const endPosition = input.selectionEnd; + const selectionLength = endPosition - startPosition; let data = null; if (evt.type === 'paste') { data = evt.clipboardData || window.clipboardData; } else { - evt.preventDefault(); data = evt.dataTransfer; } - const value = data.getData('Text')?.trim(); + const textValue = data.getData('Text'); - this.$emit('update:modelValue', value); + // Insert the pasted/dropped string at the index position + const arrOriginalString = originalValue.split(''); + arrOriginalString.splice(startPosition, selectionLength, textValue); + const blendedString = arrOriginalString.join(''); + + this.$emit('update:modelValue', blendedString); } } };