Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
Jifty::Manual::JavaScrUser3Contributed Perl DocumeJifty::Manual::JavaScript(3)

       Jifty::Manual::JavaScript - JavaScript programming guide	for Jifty

       jQuery took over	Prototype and becoming the core	of Jifty's Javascript
       development. Besides re-implementing core javascript libraries with
       jQuery, some good refactor is also being	done.

       This document is	written	to help	JavaScript programmers working for a
       Jifty project to	understand what's the different	before jQuery landed,
       and provide a quick reference for Prototypism believers to learn	the
       new wave	of JavaScript programming in Jifty.

Migration to jQuery
       This section provides a simple guide through jQuery's core functions
       that's used to replace Prototype	javascript library.

   Selecting elements with jQuery()
       Invoking	the jQuery function with exactly one string argument will
       return a	jQuery object that represents a	list of	elements. The string
       is a CSS	selector. For example:


       This works very similar to Prototype's $$() function, but with one
       difference. The return value is not an Array, it's a jQuery object that
       acts likes a Enumerable object (but still, not one). If you really want
       a Array,	you can	do:

	   var array_of_message	= jQuery("span.message").get()

       For most	cases, "jQuery("#" + id).get(0)" can be	a replacement pattern
       to "$(id)". Selecting elements with "jQuery()" function always returns
       a jQuery	object,	but not	element	it self. There are two notice
       especially for Jifty world.

       First of	all, Jifty developers should always use	"Jifty.$". Deep	in the
       design of Jifty,	there are many kind of elements	with ":" character in
       their id. Sadly it is a feature in jQuery to do more powerful selection
       with ":"	character. For example,	this selects current mouse-overed


       "jifty.js" internally use "Jifty.$" as the direct replacement to	"$()"
       function	defined	in the Prototype library.

       However,	for application	developers it's	quite safe to use
       "jQuery("#id")" to select elements they created.

   Document ready with jQuery()
       The way to do execute some javascript right after the DOM is ready is
       to bind a handler for "ready" event on the "document" object:

	   jQuery(document).ready(function() {

       Since is	done quite often, there's a shortcut:

	   jQuery(function() {

       This section list those public functions	under "Jifty" namespace.  They
       are defined in jifty.js.

       Jifty.$(	element_id )
	   This	is a shorthand of "document.getElementById" function, like the
	   "$" function	defined	in Prototype library. It is also internally
	   used	a lot because many form	specific element ID does not get along
	   with	jQuery's selector, which expect	the ":"	character is used for
	   special purpose.

	   element_id should be	a string. If not, element_id itself is
	   returned.  Therefore, this convention:

	       element = Jifty.$(element)

	   Can work when the variable "element"	is either a string, or a HTML
	   element object.

       Jifty.Effect(element, effect_name, option)
	   When	called,	instantly perform a js effect on the given element.
	   "element" is	an element object.

	   The last arg	"option" is a hash. Currently it's only	used for
	   specifying callbacks. There are two possible	callbacks, before and
	   after. You may specify them like this:

	       Jifty.Effect(element, "Fade", { duration: 2.0 },	{
		   before: function() {	... },
		   after: function() { ... }

	   The "before"	callback is called right before	the effect starts.
	   The "after" callback	is called right	after it's started, but	not
	   necessarily ended.

	   This	function is written to make it possible	that a Jifty plugin
	   can override	default	effects	with other fancy javascript libraries.
	   By default, it delegates all	the real work to jQuery's built-in
	   effect functions.

	   Given a form	element, returns all input fields inside this form.
	   That	includes INPUT,	SELECT,	tags. The returned value is an array
	   of HTML elements.

	   Given a form	element, returns a array of elements that are defined
	   as Jifty actions.

       Jifty.Form.Element.getMoniker( element )
	   Given an element, or	an element id, return a	string representing a
	   moniker of this element. It returns null if the given element is
	   considered having no	moniker	at all.

       Jifty.Form.Element.getAction( element )
	   Takes an element or an element id. Get the action for this form
	   element. The	returned value is an Action object.

       Jifty.Form.Element.getType( element )
	   Takes an element or an element id, returns the type associated with
	   this	element. Possible return values	are "registration", "value",
	   "fallback", or null if the element does not belongs to any of these

       Jifty.Form.Element.getField( element )
	   Takes an element or an element id, returns the name of it. Returns
	   null	if the element given does not have a name.

       Jifty.Form.Element.getValue( element )
	   Takes an element or an element id, returns the element value. If
	   the element is a CHECKBOX or	a RADIO	button but it's	unchecked,
	   returns null.

       Jifty.Form.Element.validate( element )
	   Validates the action	this form element is part of.

       Jifty.Form.Element.disableValidation( element )
	   Temporarily disable validation.

       Jifty.Form.Element.enableValidation( element )
	   Re-enable validation.

       Jifty.Form.Element.getForm( element )
	   Look	up the form that this element is part of.

	   This	is sometimes more complicated than you'd think because the
	   form	may not	exist anymore, or the element may have been inserted
	   into	a new form.  Hence, we may need	to walk	the DOM.

	   Upon	the failure of searching, null is returned.

       Jifty.Form.Element.buttonArguments( element )
	   Takes an element or an element id that is considered	as a "button",
	   which can be	an <INPUT type="submit"> tag, or a <A> tag, returns
	   the arguments on this element.

	   If none, an empty object is returned.

       Jifty.Form.Element.buttonActions( element )
	   Takes an element or an element id that is considered	as a "button",
	   return array	of actions on this element.

	   If none, an empty array is returned.

       Jifty.Form.Element.buttonFormElements( element )
	   Takes an element or an element id that is considered	as a "button",
	   return an array of form elements that's just	constructed based on
	   the arguments on this element.

	   If none, an empty array is returned.

       Jifty.Form.Element.clickDefaultButton( element )
	   Click the first button that will submit the action associated with
	   the form element.

       Jifty.Form.Element.handleEnter( event )
	   Trap	"Enter"	key, and prevent it from doing any browser default

	   This	function is used to handle most	Jifty-related ajax requests.
	   It handles the submission of	actions, manipulation of
	   continuations, and modification of page regions. Whenever building
	   "onclick" or	other Jifty::Web::Form::Element	event handlers,	this
	   method is generally used.

	   The "options" are passed as an object where the following
	   attributes are available.

	       This is an object declaring the monikers	you wish to submit
	       with the	update.	These actions will be taken based upon the
	       form inputs and also the	values described in
	       "action_arguments". The values assigned to each moniker should
	       be "1" to signify that that moniker should be submitted.

	       For example,

		 Jifty.update({	'actions': { 'new_entry': 1 } });

	       This specifies any additional arguments to submit with the
	       action. These are specified as a	object where the fields	are
	       the names of the	monikers to submit arguments for. The values
	       are objects describing the parameters to	pass to	the action.

	       For example,

		     'actions':	{ 'new_entry': 1 },
		     'action_arguments': { 'new_entry':	{ 'foo': 42, 'bar': 'blah' } }

	       This would submit the action for	moniker	"new_entry" with
	       whatever	form elements are included on the page along with
	       setting the parameter "foo" to "42" and the parameter "bar" to

	       TODO Please document this...

	       This is an array	describing modifications to make to page
	       regions.	Each element of	the array is an	object describing a
	       single modification. The	fields that are	valid for each include
	       the following:

		   This	is the fully-qualified name of the region to

		   These are the arguments to pass to the server. These	are
		   passed as an	argument where the field names are the keys to
		   pass. The values may	be a typical string value to pass in
		   or may be one of the	special	values listed in
		   Jifty::Request::Mapper, which will set the values based
		   upon	action results and other values	in the request.	(Those
		   values will need to be produced using the JavaScript	analog
		   of the descriptions in Perl.	Specifically, hashes are
		   JavaScript objects and actions must be given	as action

		   This	is the path of the fragment to use when	modifying the

		   This	is a special "jQuery" selector to use to choose	an
		   element to update. If this is given,	the "region" value
		   will	be ignored and the first element matching this
		   selector will be used instead.

		   This	determines what	kind of	update to perform. It may be
		   one of the following:

		       The contents of the region or selected element will be
		       completely replaced by the server response.

		   Top The server response will	be inserted within the region
		       or selected element before the rest of the content.

		       The server response will	be inserted within the region
		       or selected element after the rest of the content.

		       The content returned by the server will be inserted
		       immediately before and outside the given	region or

		       The content returned by the server will be inserted
		       immediately after and outside the given region or

		   This	is used	to select the "Jifty.Effect" to	use when
		   performing the modification.	This is	a string naming	the

       jQuery in 15 minutes

       Learning	jQuery in 30 minutes

       Prototype jQuery	going from one to the other

       jQuery Official Documentation

perl v5.32.1			  2013-01-29	  Jifty::Manual::JavaScript(3)


Want to link to this manual page? Use this URL:

home | help