场景:
输入框输入时点击插入文本的按钮,在光标位置插入文本
处理输入框的值
const setText = (str: string) => {
const insertTxt = `#${str}#`;
// 多个输入框可以用变量记录获取焦点的元素,此处为focus
const elInput: any = document.getElementById(focus);
// 获取光标所在位置前后字符串的索引
const startPos = elInput?.selectionStart;
const endPos = elInput?.selectionEnd;
if (startPos === undefined || endPos === undefined) return;
const txt = elInput?.value;
const result = txt.substring(0, startPos) + insertTxt + txt.substring(endPos);
//form.setFieldsValue({ [`${focus}`]: result }); // 输入框为表单元素时需要添加
elInput.value = result;
elInput.focus();
// 确定光标位置
elInput.selectionStart = startPos + insertTxt.length;
elInput.selectionEnd = endPos+ insertTxt.length;
};