jQuery Validate不使用Ajax和jQuery对话框

时间:2015-06-17 09:31:21

标签: javascript jquery ajax validation jquery-ui-dialog

在我的网站上,我有导航和主要内容区域。单击导航链接时,主内容区域内的内容始终通过ajax加载。如果单击链接" Contact",将加载一个文本,其中包含一个包含联系表单的jQuery对话框的链接。

问题:当您加载网站并导航到联系表单区域时,验证工作完全正常。但是,如果你导航到另一个内容区域(=通过ajax加载另一个内容),然后返回联系表单区域并单击提交按钮(没有重新加载页面之间),验证失败,被忽略和表单动作得到执行。如果您重新加载页面然后导航到联系表单区域,一切都会再次运行。

我无法理解这种行为。有什么奇怪之处:在jQuery对话框中未打开的内容区域中验证另一个表单总是有效,无论你之前点击过什么。所以必须是因为jQuery对话框弹出和Ajax。谁能理解这个问题?

我的代码来了:

HTML:

<a href="#popup-form-test" id="open-popup-form-test">open form test popup</a>

<div id="popup-form-test">
    <form id="form-test" action="somelink">
        <input type="text" placeholder="testtext eingeben" name="testText"></input>
        <input type="submit" value="submit">
    </form>
</div>

JS:

var dialogTest = $("#popup-form-test").dialog({
        autoOpen: false,
        modal: true,
        close: function () {
            console.log('closed');
        }
    });

    $("#open-popup-form-test").on("click", function () {
        dialogTest.dialog("open");
    });

    $('#form-test').validate({
       debug: true,
        rules : {
            testText: {
                required: true
            }
        },
        submitHandler: function(form) {
            alert('submitted');
        }
    });

1 个答案:

答案 0 :(得分:0)

你必须使用。{dialog()的open回调并在那里插入验证器:

Test Passed! - Correct Landing Page
PASSED on: Acapulco we had: Acapulco
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 1, Size: 1
at java.util.ArrayList.rangeCheck(Unknown Source)
at java.util.ArrayList.get(Unknown Source)
at mypackage.myclass.main(myclass.java:71)

我无法在没有有效示例的情况下进行测试,但它应该有效。