2013-08-09 3 views
0

Я использую jquery-1.9.1.min.js. Мой HTML выглядит следующим образом:Почему я не могу вызвать функцию jQuery?

<div id="practice_sheet"> 
    <form name="manage_practice_sheet" id="manage_practice_sheet" action="practice_sheet.php" method="post" > 
blah blah blah 
blah blah blah 
blah blah blah 
blah blah blah 
<input type="submit" name="btn_submit" id="btn_submit" value="{$submit_value}" class="submit c-btn"> 
</form> 
</div> 

код JQuery выглядит следующим образом:

$('#practice_sheet form').on('submit', function() { alert("Hello"); 
    if($.active > 0) { //or $.active 
     request_inprogress(); 
     return false; 
    } else { 
    $('.submit').attr('disabled', 'disabled'); 
    show_request('#practice_sheet_loader'); 
    $('html, body').animate({ 
     scrollTop: $('#practice_sheet_error_msgs').offset().top 
    }, 600); 

    var op = $('#op').val(); 

    var practice_sheet_category_id = $('#hidden_practice_sheet_category_id').val(); 


    $.ajax({ 
     type: $(this).attr('method'), 
     url: $(this).attr('action'), 
     data:$(this).serialize(), 
     dataType: 'json', 
     success: function(responseText) { 
     $('.submit').removeAttr('disabled', 'disabled');   
     remove_request('#practice_sheet_loader'); 
     $.each(responseText, function(array_key, array_val) { 
     if(array_key=='error_message') { 
       var error = clean_error_messages(array_val); 
       $('#practice_sheet_error_msgs').fadeIn('fast'); 
       $('#practice_sheet_error_msgs').html(error); 
     } else if(array_key=='success_message') { 
      if(op=='add') 
      document.location.href ="practice_sheet.php?add_practice_sheet_suc=1&op=&practice_sheet_category_id="+practice_sheet_category_id; 
      else   
      document.location.href ="practice_sheet.php?edit_practice_sheet_suc=1&op=&practice_sheet_category_id="+practice_sheet_category_id; 
      return false; 
     } 
     }); 

    } 
    }); 
    return false; 
    } 
}); 

Я не понять, почему я не могу назвать эту функцию отправки формы. Я попытался заменить live() на on(), но это не сработало. ты можешь помочь мне с этим? Заранее спасибо.

+2

которые функционируют конкретно? – Charles380

+2

- это регистрация вашего события внутри документа. Уже? проверьте это http://jsfiddle.net/6qDRk/ – PSL

+0

Думаю, вам нужно добавить это в готовый документ. Все, что вы сделали здесь, создало функцию регистрации слушателя, вам нужно запустить ее на document.ready – DavidB

ответ

0

Я думаю, что ваша форма отправляется, поэтому функция не выполняется, попробуйте предотвратитьDefault, а затем отправьте ее в конце вашей функции, если это необходимо (но, как я вижу, вы возвращаете false в любое время, так что, возможно, вы не «т нужно ...):

$('#practice_sheet form').on('submit', function(e) { 
    e.preventDefault(); 
    //.... Your code here 
}); 
2

Во-первых, помните, чтобы положить код на событие загрузки страницы:

$(function() { 
    // All your stuff here. 
}); 

Во-вторых, так как вы перекрывая форма представить поведение по умолчанию, необходимо остановить его:

// Add this to your first line within the click event handler: 
e.preventDefault(); 
+1

, а return false в конце функции не делает то же самое? – mplungjan

+0

У вас есть действие, определенное для формы. Я могу ошибаться, но я думаю, что это происходит сначала. – melancia

+2

http://stackoverflow.com/questions/1357118/event-preventdefault-vs-return-false return false из обработчика события jQuery фактически совпадает с вызовом как e.preventDefault, так и e.stopPropagation на переданном jQuery .Event object. – mplungjan

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