Forgive me if there is already an AjaxButton as described below:

Currently AjaxButton must be in a form or have a form instance passed into its 
constructor and has an onSubmit(...) method and is of type="submit" (by 
omitting type attribute, standards consider it a submit).
Proposal:

  *   add method onClick(...) to AjaxButton, if AjaxButton is in a form or a 
form has been set on it, and it is of type submit, protected onClick(...) is 
never called
  *   AjaxButton can be used outside of a form, protected onSubmit(...) will 
never be called on an AjaxButton that is not in a form (unless a form it is not 
a descendant of has been passed into the constructor)
  *   When AjaxButton is not in a form, type will be explicitly, automatically, 
set to type="button" unless template has type="reset" or AttributeModifier is 
used to set type to reset or a form instance has been passed into the 
constructor
  *   If AjaxButton is in a form or has had a form passed to it constructor, 
but type="button" in template or type set to button via ajaxbutton.add(new 
AttributeModifier("type","button")) then onSubmit(...) will never be called, 
onClick(...) will be called instead.
Purpose: There are many instances where developers use AjaxLink but from an ADA 
Compliance standpoint that is frowned upon if not used for loading content or 
navigating content. Links (<a/>) should link to something (go to another page, 
load additional content into the current page, jump to another location on the 
current page, etc), Buttons (<button/>) should do something (submit a form, 
remove or hide an element, reset a form or field, start a client side process, 
etc). You should never use an <a/> to reset a form, that is what <button 
type="reset"/> is for, you should never use an <a/> to start a client side 
program, that is what <button type="button"/> is for. This is important from a 
semantic markup standpoint, accessibility tools should be able to figure out 
how to present things without analyzing CSS and JavaScript

The AjaxButton should behave exactly like an AjaxLink when it is included in a 
template where it is not a descendant of a form or where its type has been set 
to reset or button.

Robert Murphy | Software Developer - Rocky Mountain ATV/MC

Rocky Mountain ATV/MC  -  502.291.2076<tel:+15022912076>
Address   -   77 E 800 N, Spanish Fork, UT 
84660<https://goo.gl/maps/ERSNZK8AK5Bf1Xnh9>
Website - www.rockymountainatvmc.com<https://www.rockymountainatvmc.com/>

Reply via email to