Regula表单验证在验证时崩溃

时间:2015-01-19 10:29:52

标签: javascript forms playframework-2.0 regula

我第一次使用这个库,也许我犯了一些愚蠢的错误,但我卡住了。

我正在使用Play Framework 2.0像这样服务于1.3.3

<script src="@routes.Assets.versioned("javascripts/regula-1.3.3.js")" type="text/javascript"></script>

然后我

<input type="text" name="age" id="age" data-constraints="@@Range(min=18, max=65)" />

请注意,由于播放框架模板,@@是必需的,但浏览器会看到相同的行:

<input type="text" name="age" id="age" data-constraints="@Range(min=18, max=65)">

    $(document.body).on('change','input', function (event) {
        var constraintViolations = regula.validate({
            elements: [document.getElementById("age")]
        });
    });

在控制台上:

Uncaught IllegalArgumentException: No constraints have been bound to the specified elements: age. Function received: {elements: [[object HTMLInputElement]], elementIds: [age]}

如果我添加另一个元素:

<input type="text" name="email" id="email" value="@form("email").value" data-constraints='@@Email' >

并将验证码更改为:

    $(document.body).on('change','input', function (event) {
        var constraintViolations = regula.validate({
            elements: [document.getElementById("age"), document.getElementById("email")]
        });
    });

我明白了:

Uncaught TypeError: Cannot read property 'id' of null

每当输入字段发生变化时,我也尝试调用regula.validate(),但这个简单每次都会返回一个空数组。

我做错了什么?

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

您是否先拨打regula.bind()?你必须调用它,以便监管可以检查所有元素,并找出哪些元素对它们有约束。这可能就是为什么抱怨没有任何限制因素绑定在元素上。