验证在IE11和Edge中不起作用

时间:2016-02-25 08:02:46

标签: jquery jquery-validate

我在开发网站时使用Chrome进行调试,jQuery验证成功运行。但它不适用于IE11和Edge。我不知道问题是什么。我使用了最新版本的jQuery,来自CDN的jquery.validate,以及使用' flask'(Python),jinja2 web模板的编程服务器。是什么导致了这个问题?

这是源代码的简化示例:

<script type="text/javascript" src="https://code.jquery.com/jquery-2.2.1.min.js"></script>
<script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.14.0/jquery.validate.min.js"></script>
<script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.14.0/additional-methods.min.js"></script>
<script type="text/javascript">
    $.validator.setDefaults({
        onkeyup:false,
        onclick:false,
        onfocusout:false,
        showErrors:function(errorMap, errorList){
            if(this.numberOfInvalids()) {
                $(errorList[0].element).focus();
                errorList[0].element.setCustomValidity(errorList[0].message);
                errorList[0].element.addEventListener('invalid', function(){}, true);
                errorList[0].element.reportValidity();
            }
        }
    });

    $("#signup").validate({
        rules:{
            id:{required:true, rangelength:[5,10]},
            pwd:{required:true, rangelength:[5,15]},
            pwdConfirm:{required:true, equalTo:"#pwd"}
        },
        messages:{
            id:{
                required:"msg...",
                rangelength:"msg..."
            },
            pwd:{
                required:"msg...",
                rangelength:"msg..."
            },
            pwdConfirm:{
                required:"msg...",
                equalTo:"msg..."
            }
        }
    });
</script>

<form class="uk-form uk-form-stacked" id="signup" role="form" name="signup" method="post" action="{{url_for('signup')}}" autocomplete="off">
    <input name="id" id="id" type="text" placeholder="Please enter username">
    <input name="pwd" id="pwd" type="password" placeholder="Please enter password">
    <input name="pwdConfirm" id="pwdConfirm" type="password" placeholder="Please confirm password">
</form>

但即使在Chrome中它也不起作用,我也不知道是什么问题。

所以,我尝试在下一个链接http://www.w3schools.com/js/tryit.asp?filename=tryjs_validation_rangeOverflow

进行测试

首先,我删除了w3shools示例代码,然后将我的源代码复制并粘贴到文本区域。它适用于Chrome,但在资源管理器和Edge浏览器中仍无效。

我认为这个问题是由于reportValidity(),它不支持除Chrome以外的其他浏览器,

所以我想知道用这个reportValidity函数替换了什么。

0 个答案:

没有答案