2009-09-23 2 views
0

Я пытаюсь передать функцию в качестве опции через плагин jquery, который я сам создаю.Создание вашей собственной функции jQuery-plug-функции

В тот момент, когда мой инициализации плагина с помощью следующей опции:

$.fitAjaxSubmit({ 
    formId:   "new_team", 
    postUrl:  "/teams/create.json", 
    redirectUrl: "/teams/", 
    saveBoxText: "Saving Team...", 
    beforeSubmitFn: function(){ alert('Boo!'); } 
}); 

В мой плагин я пытаюсь вызвать beforeSubmitFn как так (я также использую форму Ajax плагин):

(function($){ 
    $.fn.fitAjaxSubmit = function(options) { 

     var defaults = { 
      formId:     "formId", 
      postUrl:    "postUrl", 
      redirectUrl:   "redirectUrl", 
      saveBtnId:    "save_button", 
      saveBtnEnableText:  "Save", 
      saveBtnDisableText:  "Saving...", 
      saveBoxId:    "saving-box", 
      saveBoxText:   "Saving...", 
      errorMsgId:    "error_messages", 
      beforeSubmitFn:   function(formData, jqForm, options) {}, 
      successFn:    function(response) { 
       if(response.success == true) { 
        window.location = options.redirectUrl + response.object_id; 
       } else { 
        $('#'+options.saveBtnId).removeAttr('disabled').val(options.saveBtnEnableText); 
        $('#'+options.saveBoxId).text(options.saveBoxText).fadeOut(300); 
        $('#'+options.errorMsgId).html(errorMessages(response)).hide().fadeIn(300); 
        window.scrollTo(0,0); 
       } 
      } 
     }; 

     var options = $.extend(defaults, options); 

     return this.each(function() { 
      $('#'+options.saveBtnId).click(function() { 

       $('#'+options.saveBtnId).attr('disabled', 'disabled').val(options.saveBtnDisableText); 
       $('#'+options.saveBoxId).text(options.saveBoxText).fadeIn(200); 

       $('#' + options.formId).ajaxForm({ 
        url: options.postUrl, 
        type: "POST", 
        dataType: "json", 
        beforeSubmit: options.beforeSubmitFn, 
        success: options.successFn 
       }) 
      }); 
     }); 
    }; 
})(jQuery); 

По какой-то причине beforeSubmitFn работает в Firefox, однако в Internet Explorer, Safari и Chrome это вообще не работает!

Есть ли что-то, что мне не хватает здесь?

Заранее благодарен!

+0

Возможно, что к моменту, когда вы к нему подключились, параметры исчезли. Остальные значения параметров работают? Можете ли вы дать нам еще немного кода? –

+0

Просто добавлено больше кода! Спасибо, парни! – schone

+0

Кажется, что он изолирован от этой строки $ ('#' + options.saveBtnId) .attr ('disabled', 'disabled'). Val (options.saveBtnDisableText); - Не могу понять почему? – schone

ответ

1

Угадайте, так как вы не показываете весь свой код. Код, который вы разместили здесь, выглядит отлично.

IE и большинство других браузеров обрабатывают карту карты, форматируя немного по-другому. Вы можете проверить дополнительную запятую в определении параметров.

+0

Кажется, что это не запятая, вызывающая проблему, IE не бросает JS-ошибку либо – schone

Смежные вопросы