最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • js实现点击输入框外按钮,给光标位置添加指定内容及替换选中内容

    正文概述 掘金(慕容望舒)   2021-02-01   1035

    最近工作上有个需求,就是在文本域输入的时候,有时候需要给指定的内容替换成格式化的内容,有时候需要在文本域光标位置添加对应的自定义内容。这个有点类似聊天输入的时候,给光标位置添加表情包的操作。然后试着网上查了下,发现有对应的api来实现。

    1、点击输入框外的按钮,给输入框光标位置,插入自定义内容。

    效果如下:

    js实现点击输入框外按钮,给光标位置添加指定内容及替换选中内容 js实现点击输入框外按钮,给光标位置添加指定内容及替换选中内容

    代码实现如下:

    • 首先dom内容
    <div className={styles.normal}>
      <Button onClick={() => {
        const TextArea = document.querySelector('#box');
        this.insertAtCaret(TextArea, '( 我是插入的内容 )');
      }}>点击</Button>
      <div className={styles.wrapper}
        id="mytextarea"
      >
          <TextArea id='box'
            value={data}
            onChange={this.changeTextArea}
          />
      </div>
    </div>
    
    • 插入方法内容如下
    
      insertAtCaret(textObj, textFeildValue) {
    
        if (document.all) {
          if (textObj.createTextRange && textObj.caretPos) {
            var caretPos = textObj.caretPos;
            caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == '   ' ? textFeildValue + '   ' : textFeildValue;
          } else {
            textObj.value = textFeildValue;
          }
        } else {
          if (textObj.setSelectionRange) {
            debugger
            var rangeStart = textObj.selectionStart;
            var rangeEnd = textObj.selectionEnd;
            var tempStr1 = textObj.value.substring(0, rangeStart);
            var tempStr2 = textObj.value.substring(rangeEnd);
            textObj.value = tempStr1 + textFeildValue + tempStr2;
          } else {
            console.log("This   version   of   Mozilla   based   browser   does   not   support   setSelectionRange");
          }
        }
        this.setState({
          data: textObj.value
        })
      }
    

    注意:此方法是只适用于input textArea 文本输入框,普通标签的无法使用js实现点击输入框外按钮,给光标位置添加指定内容及替换选中内容

    链接: HTMLInputElement.setSelectionRange()

    2、修改选中的内容,改为指定的格式。

    效果如下:

    js实现点击输入框外按钮,给光标位置添加指定内容及替换选中内容 js实现点击输入框外按钮,给光标位置添加指定内容及替换选中内容

    代码实现如下:

    • 首先dom内容
    
          <div className={styles.normal}>
            <Button onClick={this.handleReplace}>点击</Button>
            <div className={styles.wrapper}
              id="mytextarea"
            >
              <TextArea
                id='box'
                value={data}
                onChange={this.changeTextArea}
                onSelect={this.selectAction}
              />
            </div>
          </div>
    
    • 选中事件代码如下
    
      selectAction = (e: any) => {
        if (window.getSelection) {
          this.setState({
            curSelectText: window.getSelection()?.toString(),
          })
        }
        // 获取选中内容也可以使用如下方法, 二者选一
        const boxDom = document.querySelector('#box');
        const selectText = boxDom ? boxDom.value
        .slice(boxDom.selectionStart, boxDom.selectionEnd) : ''
    
        this.setState({
          curSelectText: selectText,
        })
      }
    
    • 点击事件代码如下
    
      handleReplace = () => {
        const { data, curSelectText } = this.state;
        const formatData = data.replace(new RegExp(curSelectText, 'g'), `{替换的格式化内容:${curSelectText}}`);
        this.setState({
          data: formatData,
        })
      }
    

    起源地下载网 » js实现点击输入框外按钮,给光标位置添加指定内容及替换选中内容

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元