如何使用现代浏览器(具有 shadowDOM 内部编辑器)清除输入元素?
How to clear an input element with modern browser (that has shadowDOM inner-editor)?
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
。
对于 shadow-DOM 浏览器你需要这个:
setTimeout(function(){
document.getElementById('taginput').value = tempData[tempData.length - 1].trim();
},0);
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
。
对于 shadow-DOM 浏览器你需要这个:
setTimeout(function(){
document.getElementById('taginput').value = tempData[tempData.length - 1].trim();
},0);