如何在Javascript中创建自定义事件? (与IE8兼容并使用Vanilla JS)

时间:2015-12-29 14:46:38

标签: javascript html javascript-events internet-explorer-8 polyfills

我创建了一个占位符Polyfill并为了简化它,我使用value来设置占位符值。当然,这样做的危险在于,如果您提交带有占位符的表单,它将提交值。

要解决此问题,我添加了两个新的自定义事件:onbeforesubmitonaftersubmit

到目前为止,我可以使用它,但我有两个问题:

  1. 如何修改submit原型以使所有表单具有以下行为(现在我在所有表单上加载文档后设置它而不是使用相当于原型的原型是烦人):

    element.onsubmit = function () {
            element.onbeforesubmit();
            element.submit();
            element.onaftersubmit();
            return false;
    }
    
  2. 现在我修改了HTMLFormElement的原型来包含这样的两个新事件:

    HTMLFormElement.prototype.onbeforesubmit = function () {};
    HTMLFormElement.prototype.onaftersubmit = function () {};
    

    我很确定这不是正确的方法,因为我不能将addEventListener与这两个新属性一起使用。现在,我正在使用以下语法,这又是不太理想的。我怎样才能使这项工作像正常事件一样?

    element.form.onbeforesubmit = function () {
         element.value = '';
    }
    

    我希望得到的只是(在这种情况下使用addEventListener针对IE8的polyfill而不是其他浏览器):

    element.form.addEventListener('beforesubmit', function () {
         element.value = '';
    }
    

0 个答案:

没有答案