2011-01-31 2 views
3

Мне нужно привязать jQuery validate plugin к формам, которые я генерирую на лету. Насколько я знаю, .live() - единственный способ сделать это в jQuery. Кажется, это не работает, по крайней мере, так, как я пытаюсь. Я думаю, что это можно сделать, и это просто eebkac!JQuery: привязка плагина .validate к .live

Это прекрасно работает:

$("form#form_CreateUser").validate({ 
    submitHandler: function(form) { 
    // do other stuff for a valid form 
    UserSubmit(); 
    } 
}); 

Это порождает синтаксические ошибки:

$("form#form_CreateUser").live('validate', function() { 
    submitHandler: function(form) { 
    // do other stuff for a valid form 
    UserSubmit(); 
    } 
}); 
+0

Пожалуйста, не используйте URL shorteners на переполнение стека. –

ответ

14

Это не работает, потому что вы не поняли хау validate работы. Это выглядит как функции обработчика событий, такие как click, но на самом деле это не так.

click является ярлыком для bind('click', fn). validate не работает, используя bind. Так как live - это действительно способ сделать вызовы bind для элементов, которые еще не существуют, он не работает с validate.

Самый простой способ сделать это - сделать функцию, которая вызывает validate и вызывать эту функцию каждый раз, когда вы вставляете новый контент. Например, если вы вставляете форму с помощью AJAX, вы можете использовать функцию ajaxComplete:

function setupValidate() { 
    $("form#form_CreateUser").validate({ 
     submitHandler: function(form) { 
      // do other stuff for a valid form 
      UserSubmit(); 
     } 
    }); 
} 

$(document).ajaxComplete(setupValidate); // after every AJAX request 
setupValidate(); // right now 
+1

Спасибо. Это было полезно и для меня. –

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