【问题标题】:how to edit the alert success submission in JavaScript如何在 JavaScript 中编辑警报成功提交
【发布时间】:2021-04-21 13:22:23
【问题描述】:

您好,我正在编辑一个网站,那里有表单提交,我使用 formspree 提交表单(姓名、电子邮件、cmets)。然后点击发送按钮。

一切正常,期待成功的警报看起来很奇怪......见下图:

我正在尝试编辑此内容,但不知道如何进行。我希望它显示“谢谢,您的提交成功了!”

我找到了这部分的javascript代码:

// Form Validation !Plugin @v1.0
    NioApp.Plugins.submitform = function () {
        var $form = $('.nk-form-submit');
        
        if( !$().validate && !$().ajaxSubmit ) {
            console.log('jQuery Form and Form Validate not Defined.');
            return true;
        }
        
        if ($form.exists()) {
            $form.each(function(){
                var $self = $(this), _result = $self.find('.form-results');
                $self.validate({
                    ignore: [],
                    invalidHandler: function () { _result.slideUp(400); },
                    submitHandler: function(form) {
                    _result.slideUp(400);
                    $(form).ajaxSubmit({
                        target: _result, dataType: 'json',
                        success: function(data) {
                            var type = (data.result==='error') ? 'alert-danger' : 'alert-success';
                            _result.removeClass( 'alert-danger alert-success' ).addClass( 'alert ' + type ).html(data.message).slideDown(400);
                            if (data.result !== 'error') { $(form).clearForm().find('input').removeClass('input-focused'); }
                        }
                    });
                    }
                });
                $self.find('.select').on('change', function() { $(this).valid(); });
            });
        }
    };
    NioApp.components.docReady.push(NioApp.Plugins.submitform);

以及css中的代码:

.alert-success { color: #29cf77; background: #cef5e1; }

.alert-success .close { background: #64e09e; }

.alert-success-alt { background: #39d884; }

.alert-success-alt .close { background: #25b96b; }

谁能给我一些提示如何改变它?谢谢。

【问题讨论】:

    标签: javascript html forms web submission


    【解决方案1】:

    我会在问题中取一部分javascript来重点关注

                        $(form).ajaxSubmit({
                            target: _result, dataType: 'json',
                            success: function(data) {
                                var type = (data.result==='error') ? 'alert-danger' : 'alert-success';
                                _result.removeClass( 'alert-danger alert-success' ).addClass( 'alert ' + type ).html(data.message).slideDown(400);
                                if (data.result !== 'error') { $(form).clearForm().find('input').removeClass('input-focused'); }
                            }
                        });
    

    这部分是ajax部分,负责提交验证后的数据,提交成功后的返回存储在对象data中,该对象有两个属性。 data.result 给出提交状态,data.message 携带要显示在div 中的消息。这个div有一个类名.form-results,它被_result对象指向( _result = $self.find('.form-results'))

    下面一行根据data.status改变了div的class,并显示提交后发送的消息

                                _result.removeClass( 'alert-danger alert-success' ).addClass( 'alert ' + type ).html(data.message).slideDown(400);
    

    因此,要么是提交后要发送的消息,要么是对成功或失败的情况进行简短的修改。

    如果我们要进行这个修改,那么在上面提到的行之前我们添加:

    if (data.result !== 'error') {data.message="Thanks, your submission is successful!";}
    else { data.message = "Submition failed";}
    

    所以代码变成了

                        $(form).ajaxSubmit({
                            target: _result, dataType: 'json',
                            success: function(data) {
                                var type = (data.result==='error') ? 'alert-danger' : 'alert-success';
                                 /////////////////////////////////////////////
                                 if (data.result !== 'error') {data.message="Thanks, your submission is successful!";}
                                 else { data.message = "Submition failed";}
                                 //////////////////////////////////////////////
                                _result.removeClass( 'alert-danger alert-success' ).addClass( 'alert ' + type ).html(data.message).slideDown(400);
                                if (data.result !== 'error') { $(form).clearForm().find('input').removeClass('input-focused'); }
                            }
                        });
    

    现在很清楚,获得解决方案并不重要,但理解代码也很重要。

    【讨论】:

    • 感谢努尔阿拉。您的解释非常清晰易懂。我对 JS 不熟悉,但是经过您的解释,我现在有点知道它是如何工作的。我测试了它,它可以工作,但我还有其他一些显示问题。我相信是CSS...我尝试删除css alert 或alert-success,还尝试查找form-results 类,并更改颜色...但是当我提交时总是弹出白框表格......你知道我可以在哪里改变它吗?奇怪的是在我的 Safari 浏览器中我什至看不到文字,但是我的手机,至少我看到了带有白框的文字
    • 如果你把所有的HTML文件放在codepen.io/trending并发送链接,我会看到整个图,并会更清楚地讨论。
    • 既然你的问题的题目已经解决了,最好还是接受答案和其他问题一起开另一个问题,但不要忘记把你的完整HTML、CSS和Js放在@987654322上@ 并将链接放在新问题以及我的答案下的 cmets 中,这样我就可以关注你了。