【问题标题】:execute jquery in order按顺序执行jquery
【发布时间】:2014-08-30 05:05:35
【问题描述】:

我有一个表单,上面执行了 2 个不同的 jquery。问题是我需要先执行第一个,如果成功执行第二个。

基本上有一个包含 2 个元素的表单,第一个 jquery 验证表单,第二个弹出一个带有是或否操作的确认窗口。否只是关闭弹出窗口,是必须提交表单。

现在发生的情况是该弹出窗口首先出现,当单击它时,它会验证表单。我需要相反,因为确认框必须包含表单中的 2 个元素。

我的提交按钮有 id : smart-mod-eg1

任何帮助将不胜感激

谢谢

我的代码:

$(document).ready(function() {

    var $formValidate = $('#form-id').validate({
        // Rules for form validation
        rules: {
            amount: {
                required: true
            },
            address: {
                required: true
            }
        },
        // Messages for form validation
        messages: {
            amount: {
                required: 'Please enter an amount'
            },
            address: {
                required: 'Please enter receiving address'
            }
        },
        // Do not change code below
        errorPlacement: function(error, element) {
            error.insertAfter(element.parent());
        }
    });

    /*
     * SmartAlerts
     */
    // With Callback
    $("#smart-mod-eg1").click(function(e) {
        $.SmartMessageBox({
            title: "Confirm!",
            content: $("#amountSending").val(),
            buttons: '[No][Yes]'
        }, function(ButtonPressed) {
            if (ButtonPressed === "Yes") {
                content: $("#form-id").submit();
            }
            if (ButtonPressed === "No") {
                $.smallBox({
                    title: "Callback function",
                    content: "<i class='fa fa-clock-o'></i> <i>You pressed No...</i>",
                    color: "#C46A69",
                    iconSmall: "fa fa-times fa-2x fadeInRight animated",
                    timeout: 4000
                });
            }
        });
        e.preventDefault();
    })
})

【问题讨论】:

  • .validate() 何时“执行”无关紧要,只要在页面完全加载后发生即可。 .validate() 方法只是插件初始化的方式。

标签: jquery forms jquery-validate


【解决方案1】:

你需要的不是单独的点击处理程序,你需要使用验证器的submitHandler选项

$(document).ready(function () {

    var $formValidate = $('#form-id').validate({
        // Rules for form validation
        rules: {
            amount: {
                required: true
            },
            address: {
                required: true
            }
        },

        // Messages for form validation
        messages: {
            amount: {
                required: 'Please enter an amount'
            },
            address: {
                required: 'Please enter receiving address'
            }
        },

        // Do not change code below
        errorPlacement: function (error, element) {
            error.insertAfter(element.parent());
        },

        submitHandler: function () {
            $.SmartMessageBox({
                title: "Confirm!",
                content: $("#amountSending").val(),
                buttons: '[No][Yes]'
            }, function (ButtonPressed) {
                if (ButtonPressed === "Yes") {
                    $("#form-id")[0].submit();
                }
                if (ButtonPressed === "No") {
                    $.smallBox({
                        title: "Callback function",
                        content: "<i class='fa fa-clock-o'></i> <i>You pressed No...</i>",
                        color: "#C46A69",
                        iconSmall: "fa fa-times fa-2x fadeInRight animated",
                        timeout: 4000
                    });
                }
            });
            return false;
        }
    });
})

【讨论】:

  • 嘿,非常感谢。现在它在错误后正确执行一个。唯一的问题是只有“否”在显示另一个已取消的弹出窗口。但是单击 Yes, 什么也不做,带有 Yes|No 选项的叠加层只是停留在那里。有什么见解吗?非常感谢您的帮助。
  • 对于这一行内容也是如此: $("#amountSending").val(), .... 将静态单词与表单内容混合的正确语法是什么?所以它显示为:发送“X”等于“接收者”,其中 X 和接收者都是表单对象
猜你喜欢
  • 1970-01-01
  • 2011-04-12
  • 1970-01-01
  • 1970-01-01
  • 2013-04-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多