Js代码在点击事件后跳过第一行

时间:2016-12-02 13:17:18

标签: javascript jquery

根据我的以下代码,“处理”不首先附加,而是直接附加“保存”。我尝试解决这个问题,但是在我的代码中没有弄错,它没有工作并跳过第一个“处理”行。

    $('#ac_submit,#save_as_draft').click(function (e) {

        $('#save_as_draft').append('<i class="fa fa-refresh fa-spin"></i> Processing');
        $('form').find('.invalid_field').removeClass('invalid_field');
        var  validation_status = 0;
        $('#mandate_field').empty();
        $('input,textarea,select').filter('[required]').each(function(){
            if($(this).filter('[required]').val() == ''){
//                console.log($(this).filter('[required]').attr('name'));
               $(this).closest('.form-group').addClass(' has-error has-danger');
               $('#ac_submit').removeClass('disabled');
               $('#save_as_draft').removeClass('disabled');
               if($(this).closest('.hide_devices').hasClass('show_panel') == true){
                   $('#panel').addClass('invalid_field');
                   var matched_li = $(this).closest('div[id^="tab_"]').attr('id');
                   $('li a[href="#'+matched_li+'"]').addClass('invalid_field');
               } else {    
                   var divId = $(this).closest('.hide_devices').attr('id');
                   $('li a[div-id="'+divId+'"]').addClass('invalid_field')
                   var action_on_li = divId.replace(/\d+/g, '')
                   if(action_on_li == 'cloneModBusInput'){
                       $('#mod__bus').addClass('invalid_field')
                   }
                   if(action_on_li == 'cloneSensorInput'){
                       $('#sen__sor').addClass('invalid_field')
                   }
                   if(action_on_li == 'clonedRelayInput'){
                       $('#re__lay').addClass('invalid_field')
                   }
               }
               $('#mandate_field').empty().html('* Mandatory fields are missing');
               validation_status = 1;
                $(this).addClass('disabled');
                $(this).html('<i class="fa fa-save"></i> '+$(this).text()+'');
               e.preventDefault();
            } 
        });
        if(validation_status == 0){
            $('#mandate_field').empty();
            $(this).addClass('disabled');
            $(this).html('<i class="fa fa-refresh fa-spin"></i> Saving');
        } else {
            $(this).addClass('disabled');
            $(this).html('<i class="fa fa-save"></i> '+$(this).text()+'');
        }
    });

请帮我识别上述代码中的错误。

2 个答案:

答案 0 :(得分:2)

您的代码同步运行。你所做的是将一个元素附加到一个容器,然后用几行代替用新内容替换同一元素的整个html内容。结果就是你所描述的内容。

如果您想查看之前的内容半秒钟,请执行以下操作:

var self = this;

setTimeout(function () {
    if (validation_status == 0) {
        $('#mandate_field').empty();
        $(self).addClass('disabled');
        $(self).html('<i class="fa fa-refresh fa-spin"></i> Saving');
    }
}, 500);

答案 1 :(得分:0)

那是因为你覆盖了你的“处理”:

<script src="scrypt.js" type="text/javascript"></script>

下面:

$('#save_as_draft').append('<i class="fa fa-refresh fa-spin"></i> Processing');