具体来说,测试input[type=date]
是否会触发input
事件?
答案 0 :(得分:3)
你可以这样做:
var element = document.getElementById('myElement');
var supported = 'oninput' in element;
答案 1 :(得分:3)
通过查看this网站,我建议您尝试
测试B:在输入上使用setAttribute来设置oninput并检查 看看node.oninput是否是一个函数 测试C:使用w3事件api创建输入并伪造按键 查看oninput是否触发
以下是Test C的JavaScript
function testC(){
var input = document.createElement('input'),
e = document.createEvent("KeyboardEvent");
// set type for DATE
input.setAttribute('type', 'date');
e.initKeyEvent("keypress", true, true, window, false, false, false, false, 0, "e".charCodeAt(0));
// use initKeyboardEvent for webkit
document.body.appendChild(input);
input.addEventListener("input", function(e) { alert('C Successful'); e.preventDefault(); e.stopPropagation(); }, false);
input.focus();
input.dispatchEvent(e);
document.body.removeChild(input);
}
编辑:测试代码从the test page复制,只有几个小的更改(var的位置,类型=日期,警报)。我刚刚在Chrome中运行它(在将initKeyEvent
更改为initKeyboardEvent
之后)并且它不会产生任何结果,但是注释掉removeChild
行并手动执行 < / em>结果成功消息。不知道为什么模拟事件没有调用它,因此在将代码应用到代码中之前需要先查看它。