无法在字符串'loading'上创建属性'guid'

时间:2017-11-24 09:00:52

标签: javascript php jquery

我在JS中有这个代码。这样做的目的是,当点击#savecard-button时,它将通过提交,但会延迟一段时间,然后完成整个过程等等。

 $('#savecard-button').on('click', function(){
    $('#savecard-button').submit('loading').delay(1000).queue(function () {
        if ($('#form-addcard').find('.has-error').length) {
          return false;
        }else{
            $(this).attr('disabled',true);
            $(this).html('<i class=".$code."></i> Saving Changes');
            $(this).button('reset');
        }
});

});

但在尝试提交时,我在控制台上收到此错误:

Uncaught TypeError: Cannot create property 'guid' on string 'loading'

参数“loading”是否已折旧?因为几个月前,它还在工作。如果是这样,你能告诉我在这里需要更换什么吗?感谢

2 个答案:

答案 0 :(得分:0)

至少有两个问题:

  1. 我假设&#34; #sankcard-button&#34;是一个按钮(即:输入类型=&#34;按钮&#34;)?如果是这样,那么您现在正在尝试提交按钮。那不会奏效。您只能提交表格。可能你想要$('#form-addcard').submit()
  2. 如果查看submit函数的JQuery文档,您会发现它需要一个函数作为参数。现在你正在传递一个字符串。你没有通过传递加载&#39;来提及你想要做的事情。到submit函数。如果它真的是你想要在触发提交事件时执行的功能,那么请确保&#34; loading&#34;功能实际存在于某个地方。

答案 1 :(得分:0)

在对代码进行一些实验后,我能够正确地使按钮的加载状态正常工作。我摆脱了“加载”参数,因为我认为提交函数没有它。

    $('#savecard-button').on('click', function() {
        var $this = $(this);
        //$this.attr('disabled',true);
        $this.html('<i class="fa fa-spinner fa-spin"></i> Saving Changes');

        setTimeout(function() {
            $this.attr('disabled',true);
           $this.button('reset');
       }, 0);
    });