javaScript-我们如何将一个事件监听器设置为另一个事件监听器的从属
javaScript-how can we set a eventListener as a slave of the other eventListener?
我的主要问题是我们如何设置两个事件侦听器,其中一个基于另一个事件侦听器?例如:我们有很多记录,里面我们有很多相似的家族,当我们根据家庭过滤器搜索时,我们的记录仅限于整个表中的较小数量,但我们也有另一个过滤器,可以在相似的家族之间搜索我们(第二个过滤器,基于名称(,并记住两个过滤器字段(主又名家族,从属名称(必须对"Keyup"事件做出反应并积极播放结果。对不起,我的英语不好。:)
JavaScript:
(function () {
var frm = document.forms.frm1;
var dmsg = document.getElementById('dmsg');
var clear = document.getElementById('clear');
function displayGivenObjectInfo(event) {
var res;
eval('res = ' + frm.jsvar.value + ';');
var resTable = filteredPropertiesTable(res, frm.pfilter.value);
var resStr = document.createElement('div');
resStr.className = 'res';
var rtitleStr = document.createElement('div');
rtitleStr.className = 'rtitle';
var text = document.createTextNode(frm.jsvar.value + '={' + res + '} ' + 'filtered by:');
rtitleStr.appendChild(text);
var refil = document.createElement('input');
refil.type = 'text';
refil.className = 'refilter';
refil.setAttribute('value', frm.pfilter.value);
rtitleStr.appendChild(refil);
var prefil2 = document.createElement('input');
prefil2.type = 'text';
prefil2.className = 'propfilter';
prefil2.setAttribute('value','');
rtitleStr.appendChild(prefil2);
var rtextStr = document.createElement('div');
rtextStr.className = 'rtext';
rtextStr.appendChild(resTable);
resStr.appendChild(rtitleStr);
resStr.appendChild(rtextStr);
dmsg.appendChild(resStr);
// setup filter change event for the last added expression results
for (var i = 0; i < dmsg.getElementsByClassName('refilter').length; i++) {
var refilterInput = dmsg.getElementsByClassName('refilter')[i];
refilterInput.addEventListener('keyup', function () {
var rtextDiv = refilterInput.parentNode.parentNode.getElementsByClassName('rtext')[0];
while (rtextDiv.firstChild) {
rtextDiv.removeChild(rtextDiv.firstChild);
}
rtextDiv.appendChild(filteredPropertiesTable(res, refilterInput.value));
});
}
event.preventDefault(); // prevent referesh of page because of form post back
};
function filteredPropertiesTable(res, filter) {
var regExp = new RegExp('''S*' + filter + '''S*', 'i'); // regular expression for filtering
var resTable = document.createElement('table');
if (typeof res != 'string')
for (key in res)
if (regExp.test(key)) {
var tempr = document.createElement('tr');
var tempdl = document.createElement('td');
var text = document.createTextNode(key);
tempdl.appendChild(text);
var tempdr = document.createElement('td');
text = document.createTextNode(res[key]);
tempdr.appendChild(text);
tempr.appendChild(tempdl);
tempr.appendChild(tempdr);
resTable.appendChild(tempr);
}
return resTable;
};
function clearDisplay(event) {
dmsg.innerHTML = '';
event.preventDefault();
};
if (frm.addEventListener) {
frm.addEventListener('submit', displayGivenObjectInfo);
clear.addEventListener('click', clearDisplay);
} else if (frm.attachEvent) {
frm.attachEvent('onsubmit', displayGivenObjectInfo);
clear.attachEvent('onclick', clearDisplay);
}
})();
在这个JS代码中,我有两个文本字段,其中一个工作正常并且具有eventListener。但是对于第二个输入(prefil2(,我无法以某种方式设置事件侦听器以与(refil(另一个输入的结果做出反应。
注意:这是不相关的,但如果你想用我的代码测试一些东西,请我提供 html/css,如果我在这里添加它,代码部分会太长,并且它反对 roles.tnx完整代码在这里
我只是做了一个小提琴,在不同的事件之后调用一个事件。
这里
<input id="test" type="text" />
.js
var inp = document.getElementById('test');
inp.addEventListener('click', function (e) {
alert('click');
})
inp.addEventListener('keyup', function (e) {
alert('keyup')
this.dispatchEvent(new Event('click'))
});
这是你要找的吗?
编辑:
抱歉,您的示例有点像文本墙。
看看这个小提琴
search: <input id="test" type="text" /> <br/>
filter: <input id="test2" type="text" /><br />
<h1 id="pie"></h1>
.js
var inp = document.getElementById('test');
var inp2 = document.getElementById('test2');
var h = document.querySelector('h1#pie');
inp.addEventListener('keyup', function(e){
h.innerText = this.value;
inp2.dispatchEvent(new Event('keyup'))
})
inp2.addEventListener('keyup', function(e){
var reg = new RegExp(this.value, 'g');
h.innerText = inp.value.replace(reg, '');
});
使用第一个输入框显示消息,使用第二个输入框过滤掉字母。
相关文章:
- 在下拉式javascript事件监听器中选择时触发事件
- 如何在音频元素上使用React媒体合成事件监听器
- Javascript事件监听器让我很困惑
- javascript的事件监听器将下拉列表转换为输入按钮
- 组合类和事件监听器:`this`关键字
- 将事件监听器添加到画布时出错
- 如何通过javascript触发事件监听器
- 通过事件监听器在circle的文本匹配id上修改circle元素
- 动态添加javascript事件监听器,做一些无法解释的事情
- 事件处理程序&事件监听器彼此独立
- 为什么我在谷歌闭包中编写的事件监听器不起作用
- 如何在JS中使用事件监听器
- 为什么jQuery选择事件监听器会多次触发
- 为什么不'我的手机上没有设备就绪的事件监听器
- 何时在 Cocos2d-js 3.2 中注销事件监听器和定时回调
- javaScript-我们如何将一个事件监听器设置为另一个事件监听器的从属
- 按键监听器事件在firefox中不起作用
- 谷歌地图监听器事件的行为类似于点击,即使它是鼠标悬停
- 事件处理程序和监听器&事件冒泡和事件捕获
- backbone.js:防止在模型改变时触发监听器事件