2013-09-03 2 views
1

Это очень последовательно, но поджигатель показывает, что моя функция SaveForm не определяется формой моего обработчика событий «button.save», но это работает для моего обработчика событий «button.deleteForm»:Почему моя функция javascript не определена для этой функции?

function saveForm(form) 
    { 

     var $form = form; 
     var url = $form.attr('action'); 

     $.ajax({ 
       type: "POST", 
       enctype: 'mutipart/form-data', 
       url: url, 
       data: $form.serialize(), // serializes the form's elements. 
       success: function(data) 
       { 
        // data is the server response. 
        // change this function to tell the 
        // user whether their submission 
        // is correct or what fields have 
        // bad data. 
        var response = JSON.parse(data); 
        return true; 
       } 
      }); 
     return false; // avoid to execute the actual submit of the form. 
    } 

    // Do not use event handlers like .click(). This is the 
    // only viable solution for handling events on dynamically 
    // generated HTML elements. This handles the saving of data 
    // to the server. 
    $(document).on('click', 'button.save', function(e){ 
     var $form = $(this).closest('form'); 
     saveForm(form);    
    }); 

    // This event handler is responsible for deleting data. 
    // For Joey's job: Please make sure that this calls save 
    // after the user hits delete. This will save the data in 
    // the database. 
    $(document).on('click', 'button.deleteForm', function(e){ 

     // Get the form to update before deleting our embedded form 
     var $form = $(this).closest('form'); 
     var str = $(this).attr('id'); 

     // Get the table id in review to delete 
     var deleteForm = str + '_review'; 
     $('table#' + deleteForm).remove(); 

     // Get the collection form id to delete 
     var idArray = str.split('_'); 
     idArray.pop(); 
     divId = '#' + idArray.join('_'); 
     $(divId).remove(); 

     saveForm($form); 
    }); 
+6

Вам не нужно было вводить '$ form' вместо' form'? – m90

+0

Нет, на самом деле это не имеет значения, так как js свободно набирается. –

+0

Примечание AJAX * асинхронно * обычно так что возврат из 'success' ничего не делает для вас. – Lloyd

ответ

1

вы пропущено $ in saveform

$(document).on('click', 'button.save', function(e){ 
    var $form = $(this).closest('form'); 
    saveForm($form); 
    //------^----here   
}); 
+1

Это проблема, но возникает вопрос, почему 'saveForm' не определен. – Quentin

+1

Я думаю, что 'saveForm()' определяется .., но поскольку переданный аргумент неверен, OP там получает ошибку (что заставило OP думать, функция не определена) .. но incase 'button.deleteForm' аргумент правильно, поэтому никаких ошибок .. просто гадать, хотя .. :) .. и я не вижу здесь никакой причины, чтобы эта функция была неопределенной .. – bipen

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