javascript - Check if DOM element is editable (allow user input) with pure JS -
i have:
document.body.addeventlistener("keydown", function(event) { var key = event.keycode || event.which; switch (key) { case 38: ui.action.up(); break; case 40: ui.action.down(); break; case 37: ui.action.left(); break; case 39: ui.action.right(); break; } return false; }); in code implement 2048 game.
i have user forms , want exit handler if document.activeelement point inputor textarea or select handler break ability perform normal edit operation users.
currently see 2 paths such check:
["input", "textarea", "select"].indexof(document.activeelement.nodename) > -1 and:
document.activeelement instanceof htmlinputelement || document.activeelement instanceof htmltextareaelement || document.activeelement instanceof htmlselectelement what portable way , best confirm html 5 standard , shortest one?
update try 3rd strategy - check properties unique editable elements. standard http://www.w3.org/tr/dom-level-2-html/html.html of undescore.js:
var = _.intersection(object.keys(htmlinputelement.prototype), object.keys(htmltextareaelement.prototype), object.keys(htmlselectelement.prototype)) var bad = _.union(object.keys(htmlobjectelement.prototype), object.keys(htmlanchorelement.prototype), object.keys(htmldivelement.prototype), object.keys(htmlbuttonelement)); console.log(_.difference(good, bad)); i list:
"autofocus", "disabled", "required", "value" so stop with:
if (document.activeelement.value) { ... } checks!
this answer confirms standards, elegant, may lack of portability:
if (document.activeelement.value) { ... }
Comments
Post a Comment