【问题标题】:How to clear an input element with modern browser (that has shadowDOM inner-editor)?如何使用现代浏览器(具有 shadowDOM 内部编辑器)清除输入元素?
【发布时间】:2017-05-30 12:42:19
【问题描述】:
  document.getElementById('taginput').addEventListener('paste',function(e){
    var clipboardData, pastedData, inputdata, tempData, tempTags = [], currentTags = [], out = '';
    clipboardData = e.clipboardData || window.clipboardData;
    pastedData = clipboardData.getData('Text');
    inpudata = document.getElementById('taginput').value + pastedData;
    tempData = pastedData.split(',');
    for (var i = 0; i < tempData.length - 1; i++) {
      if(tempTags.indexOf(tempData[i].trim()) === -1) tempTags.push(tempData[i].trim());
    }
    Array.prototype.slice.call(document.getElementsByTagName('dynamictags')[0].children).forEach(function(data){
      currentTags.push(data.innerText);
    });
    tempTags.forEach(function(data){
      if (currentTags.indexOf(data) === -1) out += '<res>' + data + '</res>';
    });
    document.getElementsByTagName('dynamictags')[0].innerHTML = document.getElementsByTagName('dynamictags')[0].innerHTML + out;
    this.value = '';
    this.value = tempData[tempData.length - 1].trim();
  }, false);

这是我当前的代码,这个实现的问题是this.value = '' 不会重置输入字段,this.value = tempData[tempData.length - 1].trim(); }, false); 会简单地在输入字段中的用户输入之前添加新文本。

例如,如果我将apple, apple , orange, banana 粘贴到该字段中,它将保留并添加香蕉并变为banana apple, apple , orange, banana

【问题讨论】:

  • this.value == ''; => 请注意,== 是比较运算符,而不是赋值运算符。

标签: javascript shadow-dom


【解决方案1】:

对于 shadow-DOM 浏览器,您需要这个:

setTimeout(function(){
  document.getElementById('taginput').value = tempData[tempData.length - 1].trim();
},0);

【讨论】:

    猜你喜欢
    • 2020-02-24
    • 2010-11-14
    • 1970-01-01
    • 2011-12-15
    • 2012-10-19
    • 2023-03-13
    • 1970-01-01
    • 2017-10-19
    • 1970-01-01
    相关资源
    最近更新 更多