针对不支持的HTML5元素和属性的JavaScript解决方法

时间:2012-03-03 14:32:10

标签: javascript jquery html5 modernizr

我正在使用Modernizr来检测浏览器中不受支持的HTML5元素和属性。如果不支持元素/属性,我喜欢使用jQuery编写快速解决方法。

目前我正在使用input元素绊倒“required”属性。我的想法是“检测”关联的表单元素并挂钩表单的jQuery .submit()事件。 但该怎么做?

为了获得洞察力,这里有一个示例代码,我如何使用input元素修复“placeholder”属性:

if(Modernizr.input.placeholder == false) {
    alert('input placeholder not exists, perform a workaround...');
    $('[placeholder]').each(function() {
        var input = $(this);
        var placeholder = input.attr('placeholder');
        input.bind('focus', function() {
            if(this.value == placeholder) {
                this.value = '';
                $(this).removeClass('mzr-no-placeholder');
            }
        }).bind('blur', function() {
            if(this.value == '') {
                this.value = placeholder;
                $(this).addClass('mzr-no-placeholder');
            }
        });
        if(!this.value.length) {
            this.value = placeholder;
            $(this).addClass('mzr-no-placeholder');
        }
    });
}
else {
    alert('input placeholder exists.');
}

这是解决方案

感谢greut。

if(Modernizr.input.required == false) {
    alert('Tag input required not exists, perform a workaround...');
    $('form').submit(function() {
        var requirementsOK = true;
        $('[required]', this).each(function() {
            if(!this.value.length) {
                $(this).addClass('mzr-no-required');
                requirementsOK = false;
            }
            else {
                $(this).removeClass('mzr-no-required');
            }
        });
        return requirementsOK;
    });
}
else {
    alert('Tag input required exists.');
}

1 个答案:

答案 0 :(得分:1)

这里提示如何开始:

if (Modernizer.input.required === false) {
    $('form').submit(function() {
         $('[required]', this).each(function() {
              if (!$(this).val()) {
                  alert('derp!');
                  return false;
              }
         }
    }
}
相关问题