javascript - 使用 Bootstrap Ladda UI 时无法停止旋转器

标签 javascript jquery ajax twitter-bootstrap

我是网络开发新手,我会尽力解释这一点。我尝试制作一个联系我们表单,下面的代码将信息从表单传递到 PHP 文件,PHP 文件将返回发送结果。

所以,我试图在函数中添加 Ladda UI,这样当人们单击发送消息按钮时,它将开始旋转,并且当 php 文件返回结果时它将停止。我设法将Ladda.bind( '.ladda-button'); 在索引页中,这样它就会开始旋转,但我不知道如何阻止它,除非我对其设置时间限制。

我缺乏阅读下面代码的知识,请帮助我/解释代码如何工作以及我应该如何解决这个问题。!非常感谢..

https://github.com/msurguy/ladda-bootstrap

$(function() {
$("input,textarea").jqBootstrapValidation({
    preventSubmit: true,
    submitError: function($form, event, errors) {
        // additional error messages or events
    },      
    submitSuccess: function($form, event) {         
        event.preventDefault(); // prevent default submit behaviour     
        // get values from FORM
        var name = $("input#name").val();
        var email = $("input#email").val();
        var phone = $("input#phone").val();
        var message = $("textarea#message").val();
        var firstName = name; // For Success/Failure Message
        // Check for white space in name for Success/Fail message
        if (firstName.indexOf(' ') >= 0) {
            firstName = name.split(' ').slice(0, -1).join(' ');
        }           
        $.ajax({
            url: "././mail/contact_me.php",
            type: "POST",
            data: {
                name: name,
                phone: phone,
                email: email,
                message: message
            },      
            cache: false,
            success: function() {                   
                // Success message
                $('#success').html("<div class='alert alert-success'>");
                $('#success > .alert-success').html("<button type='button' class='close' data-dismiss='alert' aria-hidden='true'>&times;")
                    .append("</button>");
                $('#success > .alert-success')
                    .append("<strong>Your message has been sent. </strong>");
                $('#success > .alert-success')
                    .append('</div>');                  
                //clear all fields
                $('#contactForm').trigger("reset");
                $('#contactForm').click()
            },
            error: function() {
                // Fail message
                $('#success').html("<div class='alert alert-danger'>");
                $('#success > .alert-danger').html("<button type='button' class='close' data-dismiss='alert' aria-hidden='true'>&times;")
                    .append("</button>");
                $('#success > .alert-danger').append("<strong>Sorry " + firstName + ", it seems that my mail server is not responding. Please try again later!");
                $('#success > .alert-danger').append('</div>');
                //clear all fields
                $('#contactForm').trigger("reset");
            },
        })
    },
    filter: function() {
        return $(this).is(":visible");
    },
});
$("a[data-toggle=\"tab\"]").click(function(e) {
    e.preventDefault();
    $(this).tab("show");
});

});

添加了 html 代码:

    <form name="sentMessage" id="contactForm" novalidate>
                    <div class="row">
                        <div class="col-md-6">
                            <div class="form-group">
                                <input type="text" class="form-control" placeholder="Your Name *" id="name" required data-validation-required-message="Please enter your name.">
                                <p class="help-block text-danger"></p>
                            </div>
                            <div class="form-group">
                                <input type="email" class="form-control" placeholder="Your Email *" id="email" required data-validation-required-message="Please enter your email address.">
                                <p class="help-block text-danger"></p>
                            </div>
                            <div class="form-group">
                                <input type="tel" class="form-control" placeholder="Your Phone *" id="phone" required data-validation-required-message="Please enter your phone number.">
                                <p class="help-block text-danger"></p>
                            </div>
                        </div>
                        <div class="col-md-6">
                            <div class="form-group">
                                <textarea class="form-control" placeholder="Your Message *" id="message" required data-validation-required-message="Please enter a message."></textarea>
                                <p class="help-block text-danger"></p>
                            </div>
                        </div>
                        <div class="clearfix"></div>
                        <div class="col-lg-12 text-center">
                            <div id="success"></div>
                            <button type="submit" id="form-submit"class="btn btn-xl ladda-button" data-style="expand-right" data-color='blue' data-size="l" ><span class="ladda-label">Send Message</span></button>

                        </div>
                    </div>
                </form>

加载动画的代码

    <script>
        // Bind normal buttons
        Ladda.bind( '.ladda-button');
    </script>

最佳答案

试试这个代码:

$(function() {
    var button;
    $('.ladda-button').click(function(e){
        button = this;
    })
    $("input,textarea").jqBootstrapValidation({
        preventSubmit: true,
        submitError: function($form, event, errors) {
            // additional error messages or events
        },      
        submitSuccess: function($form, event) {         
            event.preventDefault(); // prevent default submit behaviour     
            var l = Ladda.create(button);
            l.start();  // Starts the spinner
            // get values from FORM
            var name = $("input#name").val();
            var email = $("input#email").val();
            var phone = $("input#phone").val();
            var message = $("textarea#message").val();
            var firstName = name; // For Success/Failure Message
            // Check for white space in name for Success/Fail message
            if (firstName.indexOf(' ') >= 0) {
                firstName = name.split(' ').slice(0, -1).join(' ');
            }           
            $.ajax({
                url: "././mail/contact_me.php",
                type: "POST",
                data: {
                    name: name,
                    phone: phone,
                    email: email,
                    message: message
                },      
                cache: false,
                success: function() {                   
                    // Success message
                    $('#success').html("<div class='alert alert-success'>");
                    $('#success > .alert-success').html("<button type='button' class='close' data-dismiss='alert' aria-hidden='true'>&times;")
                    .append("</button>");
                    $('#success > .alert-success')
                    .append("<strong>Your message has been sent. </strong>");
                    $('#success > .alert-success')
                    .append('</div>'); 
                    l.stop(); // Stops the spinner
                    //clear all fields
                    $('#contactForm').trigger("reset");
                    $('#contactForm').click()
                },
                error: function() {
                    // Fail message
                    $('#success').html("<div class='alert alert-danger'>");
                    $('#success > .alert-danger').html("<button type='button' class='close' data-dismiss='alert' aria-hidden='true'>&times;")
                    .append("</button>");
                    $('#success > .alert-danger').append("<strong>Sorry " + firstName + ", it seems that my mail server is not responding. Please try again later!");
                    $('#success > .alert-danger').append('</div>');
                    l.stop(); // Stops the spinner
                    //clear all fields
                    $('#contactForm').trigger("reset");
                },
            })
        },
        filter: function() {
            return $(this).is(":visible");
        },
    });
    $("a[data-toggle=\"tab\"]").click(function(e) {
        e.preventDefault();
        $(this).tab("show");
    });
});

并首先删除此行

Ladda.bind('.ladda-button');

关于javascript - 使用 Bootstrap Ladda UI 时无法停止旋转器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27497581/

相关文章:

php - 使用CSS显示隐藏内容和添加图片效果

javascript - $(document).ready(function() 和 $(function() 之间有什么区别?

javascript - Node .js `request.get` : store body in variable

javascript - 如何在应用调整大小功能时获取 ​​div 的运行时尺寸?

jquery - 使用 jQuery 更改地址栏中的 URL

ajax - 如何提交表单,来自 p :selectBooleanCheckbox change event

javascript - 如何正确停止mousemove事件?

javascript - 了解获取数组中第二低和第二高的值

javascript - 使用ajax和php从表中加载更多数据

javascript - 使用 jQuery 动态 "add another product"表单