【问题标题】:jQuery Validation Ajax Submit helpjQuery Validation Ajax 提交帮助
【发布时间】:2009-09-23 00:55:05
【问题描述】:

我正在使用这个 jQuery 验证脚本来提交我的表单,但我需要一些帮助来调整它以显示消息并再次显示表单(提交后)

http://www.position-absolute.com/articles/jquery-form-validator-because-form-validation-is-a-mess/

^^ 代码

http://www.position-relative.net/creation/formValidator/demoSubmit.html

^^ 演示

如果您查看演示,我希望它显示绿色消息并再次显示表单(而不是隐藏它)。我似乎无法弄清楚脚本中的哪个位置可以更改它。 . 这是执行ajax提交功能的JS代码的sn-p:

submitForm: function (caller) {
        if ($.validationEngine.settings.ajaxSubmit) {
            $.ajax({
                type: "POST",
                url: $.validationEngine.settings.ajaxSubmitFile,
                async: true,
                data: $(caller).serialize(),
                beforeSend: function () {

                },
                success: function (data) {
                    if (data == "true") { // EVERYTING IS FINE, SHOW SUCCESS MESSAGE
                        $(caller).css("opacity", 1)
                        $(caller).animate({
                            opacity: 0,
                            height: 0
                        },
                        function () {
                            $(caller).css("display", "none")
                            $(caller).before("<div class='ajaxSubmit'>" + $.validationEngine.settings.ajaxSubmitMessage + "</div>")
                            $.validationEngine.closePrompt(".formError", true)
                            $(".ajaxSubmit").show("slow")
                            if ($.validationEngine.settings.success) { // AJAX SUCCESS, STOP THE LOCATION UPDATE
                                $.validationEngine.settings.success && $.validationEngine.settings.success();
                                return false;
                            }
                        })
                    } else { // HOUSTON WE GOT A PROBLEM (SOMETING IS NOT VALIDATING)
                        data = eval("(" + data + ")");
                        errorNumber = data.jsonValidateReturn.length
                        for (index = 0; index < errorNumber; index++) {
                            fieldId = data.jsonValidateReturn[index][0];
                            promptError = data.jsonValidateReturn[index][1];
                            type = data.jsonValidateReturn[index][2];
                            $.validationEngine.buildPrompt(fieldId, promptError, type);
                        }
                    }
                }
            })
            return true;
        }
        if ($.validationEngine.settings.success) { // AJAX SUCCESS, STOP THE LOCATION UPDATE
            $.validationEngine.settings.success && $.validationEngine.settings.success();
            return true;
        }
        return false;
    },

【问题讨论】:

    标签: jquery ajax validation submit


    【解决方案1】:

    更新后的 if 语句可能类似于:

    if (data == "true") { // EVERYTING IS FINE, SHOW SUCCESS MESSAGE
      $(caller).before("<div class='ajaxSubmit'>" + $.validationEngine.settings.ajaxSubmitMessage + "</div>")
      $.validationEngine.closePrompt(".formError", true)
      $(".ajaxSubmit").show("slow")
      if ($.validationEngine.settings.success) { // AJAX SUCCESS, STOP THE LOCATION UPDATE
        $.validationEngine.settings.success && $.validationEngine.settings.success();
        return false;
      }
    }
    

    【讨论】:

    • 嗯,我隐藏了,但消息没有显示.. 也没有保存... FF 中也没有 js 错误,只是没有做任何事情..
    • 啊,我明白了..我将不透明度和高度更改为 1,并将 css 更改为内联显示..现在就像一个魅力..谢谢你的帮助!! :)
    • 哦抱歉,我匆忙中错过了 animate 函数内部有回调!
    • 删除 animate 调用,删除 css(display: none) 调用,并将 animate 回调内联中的其余内容留在 animate 曾经所在的位置.你不需要什么都不做的动画:)
    • 这是另一个动态的理论,我发现可以最大限度地减少垃圾邮件发送者,而且效果很好,请参见示例:stackoverflow.com/q/5571353/285594
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多