If you load a form onto a web2py page via AJAX, it doesn't get the enhancements 
from web2py_ajax_init().

I've included a modified web2py_ajax_init that accepts an optional parent 
selector to provide some scope to web2py_ajax_init. In this way if you load a 
form onto a page, you can call web2py_ajax_init on that specific form to give 
it the enhancements, without effecting every other form on the page.

I've included the modified function here as it may be useful to others in the 
future.

An alternative approach may be to bind events using jQuery.live(), so that you 
don't have to explicitly call web2py_ajax_init() every time you load a form.

--------
function web2py_ajax_init(parent) {
  var find = function(selector) {
      if (parent)
          return $(parent).find(selector);
      else
          return jQuery(selector);
  }
  find('.hidden').hide();
  find('.error').hide().slideDown('slow');
  find('.flash').click(function() { find(this).fadeOut('slow'); return false; 
});
  // find('input[type=submit]').click(function(){var 
t=find(this);t.hide();t.after('<input class="submit_disabled" 
disabled="disabled" type="submit" name="'+t.attr("name")+'_dummy" 
value="'+t.val()+'">')});
  
find('input.integer').keyup(function(){this.value=this.value.reverse().replace(/[^0-9\-]|\-(?=.)/g,'').reverse();});
  
find('input.double,input.decimal').keyup(function(){this.value=this.value.reverse().replace(/[^0-9\-\.]|[\-](?=.)|[\.](?=[0-9]*[\.])/g,'').reverse();});
  
find("input[type='checkbox'].delete").each(function(){find(this).click(function()
 { if(this.checked) if(!confirm("{{=T('Sure you want to delete this 
object?')}}")) this.checked=false; });});
  try {find("input.date").focus(function() {Calendar.setup({
     inputField:this.id, ifFormat:"{{=T('%Y-%m-%d')}}", showsTime:false
  }); }); } catch(e) {};
  try { find("input.datetime").focus( function() {Calendar.setup({
     inputField:this.id, ifFormat:"{{=T('%Y-%m-%d %H:%M:%S')}}", showsTime: 
true,timeFormat: "24"
  }); }); } catch(e) {};
  try { find("input.time").timeEntry(); } catch(e) {};
};
---------------

This communication, including any attachments, does not necessarily represent 
official policy of Seccuris Inc.
Please see http://www.seccuris.com/Contact-PrivacyPolicy.htm  for further 
details about Seccuris Inc.'s Privacy Policy.
If you have received this communication in error, please notify Seccuris Inc. 
at i...@seccuris.com or at 1-866-644-8442.

Reply via email to