javascript - 如何让 jQuery valid 函数在 IE 上可靠运行?

标签 javascript jquery internet-explorer validation

我对 jQuery 有效函数有疑问。在 IE 上,它不起作用,valid 总是返回 true。我使用了这段代码:client side validation with dynamically added field

这是图表:

                    Chrome      IE

jquery-1.6.1        works       not working
jquery-1.4.4        works       works

1.6 也不适用于 IE。但是,1.4.4 jQuery valid 在 IE 上有效。

这是 jsFiddle-friendly 测试(将其作为本地 html 进行测试):

<!--
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script> -->

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js" type="text/javascript"></script>

<script src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.8/jquery.validate.min.js" type="text/javascript"></script>

<script src="http://ajax.aspnetcdn.com/ajax/mvc/3.0/jquery.validate.unobtrusive.min.js" type="text/javascript"></script>



<form id="XXX">
    <input type="submit" id="Save" value="Save">

</form>


<script type="text/javascript">

    // sourced from https://stackoverflow.com/questions/5965470/client-side-validation-with-dynamically-added-field
    // which I do think don't have a bug
    (function ($) {


        $.validator.unobtrusive.parseDynamicContent = function (selector) {
            //use the normal unobstrusive.parse method
            $.validator.unobtrusive.parse(selector);

            //get the relevant form
            var form = $(selector).first().closest('form');

            //get the collections of unobstrusive validators, and jquery validators
            //and compare the two
            var unobtrusiveValidation = form.data('unobtrusiveValidation');
            var validator = form.validate();

            $.each(unobtrusiveValidation.options.rules, function (elname, elrules) {
                if (validator.settings.rules[elname] == undefined) {
                    var args = {};
                    $.extend(args, elrules);
                    args.messages = unobtrusiveValidation.options.messages[elname];
                    $('[name=' + elname + ']').rules("add", args);
                } else {
                    $.each(elrules, function (rulename, data) {
                        if (validator.settings.rules[elname][rulename] == undefined) {
                            var args = {};
                            args[rulename] = data;
                            args.messages = unobtrusiveValidation.options.messages[elname][rulename];
                            $('[name=' + elname + ']').rules("add", args);
                        }
                    });
                }
            });
        }
    })($);
    // ...sourced from others


    // my code starts here...
    $(function () {

        var html = "<input data-val='true' " +
           "data-val-required='This field is required' " + "name='inputFieldName' id='inputFieldId' type='text'/>";
        $("form").append(html);

        var scope = $('#XXX');

        $.validator.unobtrusive.parseDynamicContent(scope);




        $('#Save').click(function (e) {
            e.preventDefault();
            alert(scope.valid());
        });

    });
    // ...my code ends here

</script>

更新

我在 jsFiddle 上试过我的代码,它有副作用,jQuery 1.6 的 valid 在 IE 上工作。不要在 jsFiddle 上测试此代码。在您的本地 html 上测试此代码

最佳答案

这个问题已经解决了。试试 1.8.1 版。

Download jQuery validation plugin

关于javascript - 如何让 jQuery valid 函数在 IE 上可靠运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6135112/

相关文章:

javascript - 占位符在 IE10 中不起作用

javascript - MVC 4 和 JQuery

javascript - 更改socket.on中的变量

javascript - ajax 无法在购物车中单击

javascript - 获取祖 parent 元素中的文本

jquery - HTML5视频。网络无法按预期在Safari上运行

javascript - 如何过滤SSE脚本中的重复消息?

javascript - Jquery获取选定td下的特定文本区域

internet-explorer - 如何在 IE 中运行的 Web 应用程序中查找内存泄漏?

html - 下拉菜单中的链接在 IE 中不起作用