2

我有这个小 HTML 文件:

<html>
    <head></head>
    <body>
        <form id='MyForm'>
            <input type='text' required />
            <input type='submit' />
        </form>

        <script src="/js/jquery-1.9.0.js"></script>
        <script src="/js/jquery.validate.js"></script>
        <script>
            var validator = $("#MyForm").validate();
            alert(validator.form());
        </script>
    </body>
</html>

这提醒我“错误”,这是预期的行为。

当我使用 js-test-driver 进行单元测试时,问题就来了:

TestCase("MyTests", {

    setUp: function() {
        this.myform = "<form id='MyForm'><input type='text' required /><input type='submit'  /></form>";

        this.validator = $(this.myform).validate();
        jstestdriver.console.log("Does the form validate? " + this.validator.form());
    },

    test_empty: function() {
    },

});

此代码将字符串返回给我

表格是否有效?真的

这当然是我项目的简化版本,但关键是我似乎无法对正在开发的验证模块进行单元测试,因为 jQuery 验证插件似乎不起作用。我错过了什么?

4

3 回答 3

2

正如 Enrique 提到的,问题与 jQuery 的:hidden选择器有关。

使固定:

$.validator.setDefaults({ ignore: "" });
var validator = $("#MyForm").validate();
alert($("#MyForm").valid());
于 2017-05-08T10:06:48.827 回答
1

我找到了!显然插件 bz 默认忽略“.hidden”输入。正如 jQuery 文档所说,

Elements can be considered hidden for several reasons:

- They have a CSS display value of none.
- They are form elements with type="hidden".
- Their width and height are explicitly set to 0.
- An ancestor element is hidden, so the element is not shown on the page.

因为单元测试是无浏览器的,所以输入元素满足了这个要求,因此被验证插件忽略了!

=)

于 2013-06-25T11:36:17.647 回答
0

试试.valid()哪个是触发测试并获得表示表单有效性的布尔值的正确方法。

<script>
        var validator = $("#MyForm").validate();
        alert($("#MyForm").valid());
</script>

////

this.validator = $(this.myform).validate();
jstestdriver.console.log("Does the form validate? " + $(this.myform).valid());
于 2013-06-24T18:45:22.647 回答