我的jquery验证方法没有在表单提交上触发

时间:2012-06-11 22:33:03

标签: jquery validation jquery-validate

我完全准备承认我在这里缺少一些简单的东西。我发现jquery docs页面上的文档并不能真正包含进行基本自定义验证所需的所有信息。

我的问题是我需要验证元素中未包含的数据,所以我一直在使用某种“虚拟”元素来尝试触发我的自定义方法。

<div id="modal-dialog-overlay">
<div id="modal-background"></div>
<article id="dialog-form" class="event-module module">
    <header>
        <h6>New Event</h6>
        <section class="module-actions">
            <span class="button" onclick="overlay_select('modal-dialog-overlay', true);">Cancel</span>
            <span class="primary button" onclick="createBEvent()">Create Event</span>
        </section>
    </header>
    <section class="wrapper">
        @using (Html.BeginForm("CreateEvent", "Conversations", FormMethod.Post, new { enctype = "multipart/form-data", id = "createEventForm", @class = "group" }))
        {
            <input id="participantsChecker" type="text" />
            <input class="submit" type="submit" value="Submit"/>
        }
    </section>
</article>
</div>
</div>

然后javascript位是

    $.validator.addMethod("checkParticipants", function (value, element) {
        alert($(".event-module .contact-handle [name='Key']").length);
        return $(".event-module .contact-handle [name='Key']").length
    }, "You need to invite at least one person.");
    $("#createEventForm").validate({
        rules: {
            participantsChecker: {
                checkParticipants: true
            }
        }
    });

该文件已在页面中。 页面上还有其他代码,用于添加选择器正在查找的元素,这些代码肯定存在。在任何情况下,提交表单时都不会出现该警报。我只是在没有输入任何内容的情况下点击提交来测试它。

1 个答案:

答案 0 :(得分:1)

输入元素必须有一个名称,这就是jQuery Validate与它们交互的方式:

<input id="participantsChecker" name="participantsChecker" type="text" />

这应该有效。