2013-12-05 3 views
0

Я пытаюсь автоматически выполнить предварительную обработку формы, когда форма загружается на моем сайте. Это может произойти с помощью обычной загрузки страницы, но также с помощью встроенной загрузки AJAX. Поэтому положить его в $(document).ready(function() { /* ... */ }); не устраивает моих потребностей.jQuery Dynamic on form load

То, что я до сих пор:

$("form").each(function() { 
    $(this).ready(function() { 
     $(this).find(".input input").each(function() { 
      var required = $(this).data("required"); 
      var checkField = $(this).closest("tr").children(".check"); 
      var errorField = $(this).closest("tr").children(".errormessage"); 
      if (required) { 
       $(checkField).css("color", "#FFFF00"); 
       $(checkField).html("✘"); 
       $(errorField).css("color", "#FFFF00"); 
       $(errorField).html("(Required)"); 
      } 
      else { 
       $(checkField).css("color", "#FFFF00"); 
       $(checkField).html("✔"); 
       $(errorField).css("color", "#000000"); 
       $(errorField).html(""); 
      } 
     }); 
    }); 
}); 

При вводе его в $(document).ready(function() { /* ... */ }); она работает, но только для первой загрузки. Когда я выхожу из этой функции, он никогда не работает, он даже не достигает $("form").each(function() { /* ... */ });.

Как это исправить?

+0

Это потому, что загружается 'form', загружается Ajax, если вам нужно будет прослушать документ для него, например. '$ (document) .find ('form')' .. поэтому его можно найти после загрузки '.ajax'. – MackieeE

+0

Не нужно '$ (document.ready (function() {$ (document) .on (" ready "," form ", function() {/ * ... * /}); идея, стоящая за ней. – skiwi

+0

Просто подтвердил, что он работает с '.on (« click », ...)', однако он, похоже, не работает с '' ready ''. – skiwi

ответ

0

Не могли бы вы сделать плагин из этого? Например:

$.fn.formRendering = function(){ 

    //process your code here 
}; 

$('form').formRendering();